Я не совсем понимаю, как работает git revert - PullRequest
2 голосов
/ 10 апреля 2019

Я хочу знать, что происходит.Я создал файл HTML и поместил в него несколько строк

this is first line
this is second line
this is third line
this is fourth line

и зафиксировал после каждой строки, например, коммит a, коммит b, коммит c, коммит d соответственно.

Теперь я выполнил возвратсовершить c, но выдает ошибку:

could not revert 82b69e5... c

hint: after resolving the conflicts, mark the corrected paths <br>
hint: with 'git add <paths>' or 'git rm <paths>' <br>
hint: and commit the result with 'git commit'<br>

Я хочу знать, как работает git-revert.Я знаю что-то вроде «отменяет коммит и добавляет новый коммит», но не знаю, как успешно его использовать.

Ответы [ 2 ]

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

Создает инвертированный патч для коммита, который вы хотите вернуть, поэтому в вашем случае коммит c выглядел так:

 this is first line
 this is second line
+this is third line
# End of file

Затем из d вы запускаете git revert c, поэтому он пытается создать следующее и применить его к вашему дереву:

 this is first line
 this is second line
-this is third line
# End of file

Однако ваш файл выглядит так:

this is first line
this is second line
this is third line
this is fourth line
# End of file

Таким образом, созданный патч не применяется (конец файла и четвертая строка конфликтуют) Итак, когда Git говорит вам:

could not revert 82b69e5... c
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add ' or 'git rm '
hint: and commit the result with 'git commit'

Это означает, что «я пытался сделать то, что вы просили, но я столкнулся с делом, которое не могу решить», поэтому вам нужно либо:

Скорее всего, ваше разрешение будет:

this is first line
this is second line
this is fourth line
1 голос
/ 10 апреля 2019

Команда git revert может рассматриваться как команда типа undo , однако она не является традиционной операцией отмены.

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

А что касается вашей проблемы, вы получаете конфликты слияния. Для исправления этих конфликтов вы можете использовать git mergetools (например, Meld).

...