Вы можете сбросить состояние репо до более раннего коммита. Сначала выясните, на какой коммит вы хотите сбросить репо:
git log
Чтобы сбросить репо в это состояние:
git reset --hard <commit_hash>
Если у вас есть разветвленное удаленное репо, вы можете перенести в него следующие изменения:
git push -f <remote> <branch>
Возможно, вы захотите изменить свой рабочий процесс, чтобы в будущем все было проще.
Когда я открываю репо и делаю свои собственные изменения, я сначала настраиваю два пульта. Один пульт будет указывать на мое разветвленное репо (например: origin
), и добавлять другие удаленные точки в оригинальное репо, из которого был разветвлен (например: original_repo
). Так что я мог бы иметь что-то вроде:
$ git remote
origin
original_repo
Я создаю ветку, чтобы выполнять всю мою работу, например: feature
. Когда я делаю пулл-запрос, я делаю это из ветви feature
в ветку original_repo
master
. Если запрос на получение ответа отклонен, как в вашем примере, вы можете просто отказаться от этой ветки. Если вы хотите работать над дополнительными модификациями, просто создайте другую ветку из master
и используйте ее для работы.
Я также не фиксирую и не объединяю локальные изменения в ветку master
. Я использую только ветку master
для синхронизации с веткой original_repo
master
. например:
git checkout master
git fetch original_repo
git merge original_repo/master
Это гарантирует, что ветка master
всегда синхронизируется с веткой master
исходного репо. Например, если запрос извлечения был принят и объединен, при получении и объединении локальный master
также будет иметь весь «утвержденный» код, использованный в исходном репо.
В основном используйте master
для синхронизации с исходным репо master
и всегда переходите от мастера, когда вы хотите внести изменения. Используйте эти ветки для ваших запросов на получение исходных репо.