Как отменить фиксацию как новую фиксацию в ветке - PullRequest
0 голосов
/ 08 мая 2020

В основном у меня есть сценарий, в котором у меня есть фиксация на master, которую я хочу вернуться в предыдущее состояние, чтобы зафиксировать новые изменения. Все это должно быть сделано в ветке, поэтому моя идея заключалась в том, чтобы разветвить мастер с нежелательной фиксацией в новую ветку b, а затем вернуть нежелательную фиксацию unwantedC в моей ветке b и pu sh it как новый коммит revertedUnwantedC. Моя цель состоит в том, чтобы я не получал статус типа «ваша ветка xy фиксируется за мастером», потому что тогда моя ветка должна быть впереди. Если это возможно, я хочу сделать sh желаемые изменения newCommit в ветке, а затем сделать PR, который не жалуется на проблемы слияния с мастером, потому что он думает, что мастер впереди. Возможно ли что-то подобное? И какие команды мне нужно было бы использовать?

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Да, то, что вы описываете, должно быть легко возможным. Рассмотрим следующую историю:

A-B-C-D-E <- master

Теперь C - это ошибочная фиксация, которую вы хотите отменить (а затем продолжить работу на этом возвращенном состоянии):

$ git checkout -b unwanted C

Вы теперь в новой ветке под названием unwanted, которая содержит вашу ошибочную фиксацию и все, что было до (но не все после).

A-B-C-D-E <- master
    ^--      unwanted

Теперь верните C (создаст новую фиксацию в вашей ветке) и продолжайте работать:

$ git revert C
# hack hack hack
$ git commit
# hack hack hack
$ git commit

дает вам (C' является откатом фиксации C):

A-B-C-D-E    <- master
     \
      C'-X-Y <- unwanted

Затем вы можете pu sh и создать запрос на перенос / запрос на слияние или просто слияние unwanted обратно в master:

$ git checkout master
$ git merge unwanted

Обратите внимание, что после слияния любые изменения C больше не будут существовать в главном файле (они были отменены, и слияние также объединяет их обратные изменения ).

1 голос
/ 08 мая 2020

Вы можете использовать команду git revert , чтобы создать новую фиксацию, которая отменяет предыдущую фиксацию. В этом вопросе StackOverflow более подробно рассказывается, как это работает.

Когда вы объединяете свою ветку с новым коммитом обратно в master, у вас будет один коммит, который вносит изменения, а другой совершить, отменяющее это изменение.

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