сделать удаленную ветку 5 фиксирует обратно - PullRequest
2 голосов
/ 09 апреля 2019

Я совершил и подтолкнул ветку. Теперь я решил отменить последние два коммита, я знаю, что могу сделать git reset --hard HEAD~2, и я только что сделал это. Теперь в моем местном отделении коммиты находятся в двух шагах назад. Но как я могу отправить это в удаленную ветку? Я имею в виду, как я могу сделать так, чтобы в удаленной ветке также было 2 коммита назад?

Причина, по которой я спрашиваю, заключается в том, что после того, как я сделал выше, вернувшись локально, я изменил код и зафиксировал. Когда я нажимаю на удаленное репо, я получаю ошибку отклонения:

Updates were rejected because the tip of your current branch is behind

==== ОБНОВЛЕНИЕ ====

Я попытался ответить @Tim Biegeleisen git revert --no-commit HEAD~5.., но получил ошибку:

error: commit d7f37d67f8dbdaecc534c06316b7417657e527 is a merge but no -m option was given. fatal: revert failed 

И удаленная ветвь показывает, что последним коммитом является "ветвь слияния 'foo' of ..."

Ответы [ 3 ]

3 голосов
/ 09 апреля 2019

Учитывая, что ваша ветвь является общедоступной и общедоступной, вам, вероятно, следует , а не сделать полный сброс, чтобы фактически удалить 2 верхних коммита. Вместо этого используйте git revert:

git revert master~2..master

или, может быть

git revert --no-commit HEAD~2..

Это добавит новый коммит поверх HEAD вашей ветки master, который функционально отменит текущие топ-2 коммитов. Обратите внимание, что эти коммиты все еще будут там, что означает, что любой, кто потянет, просто получит новый коммит.

Edit:

Судя по вашим комментариям и сообщениям об ошибках, кажется, что один из двух коммитов является коммитом слияния. Это означает, что вам нужно будет сказать Git, кому из двух родителей следует следовать при выполнении возврата. Я не знаю, как сделать это в одной команде с диапазоном коммитов, но мы можем попробовать сделать два отдельных возврата. Предполагая, что HEAD указывает на коммит слияния:

git revert -m 1 abc123    # or use -m 2 to follow the other parent

Здесь abc123 - это хэш SHA-1 коммита HEAD, который вы можете найти с помощью git log. Затем сделайте второй возврат для второго коммита:

git revert xyz345
1 голос
/ 09 апреля 2019

Я бы не рекомендовал делать сброс.

Самый безопасный способ - выполнить возврат, например:

git revert enter-your-commit-id-here

И затем безопасно нажать на пульт.

1 голос
/ 09 апреля 2019

Если вы сделаете обычный git push, он, вероятно, сообщит вам, что вы позади, и что вам нужно синхронизироваться, но если вы выполните git push --force, он обновит удаленную ветвь до предыдущего коммита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...