Ответ 1
Вы можете reset ваше состояние репо к более раннему фиксации. Сначала выясните, какой фиксатор вы хотите использовать reset для своего репо:
git log
В reset ваше репо в это состояние:
git reset --hard <commit_hash>
Если у вас есть разветвленное дистанционное репо, вы можете нажать на него следующие изменения:
git push -f <remote> <branch>
Возможно, вы захотите изменить свой рабочий процесс, чтобы упростить работу в будущем.
Когда я форк репо и делаю свои собственные изменения, я сначала создал два пульта. Один пульт укажет на разветвленное репо (ex: origin
) и добавит еще одну удаленную точку в репозиторий оригинал, который был разветвлен (ex: 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
всегда будет синхронизирована с исходной ветвью repo master
. Например, если запрос на перенос был принят и объединен, когда происходит выборка и слияние, локальный master
также будет иметь все "утвержденные" коды, используемые в исходном репо.
В основном используйте master
для синхронизации с исходным репо master
и всегда выходите из мастера, когда хотите внести изменения. Используйте те ветки для ваших запросов на возврат к исходному репо.