Я знаю, что git cherry-pick
- это команда, использующая для применения изменений указанной фиксации, но я думаю, что просто не понимаю, как она работает.Почему у этой вишни есть конфликт?
Давайте предположим, что акт репо так:
git init
echo a>a
git add .; git commit -am 'master add line a'
git checkout -b dev
echo b>>a
git commit -am 'dev add line b'
echo c>>a
git commit -am 'dev add line c'
git checkout master
git cherry-pick dev
Я думал cherry-pick
команда будет хорошо работать и изменить файл a
в:
a
c
, но на самом деле я получил следующее сообщение:
error: could not apply 08e8d3e... dev add line c
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
И затем я запускаю:
git diff
выход:
diff --cc a
index 7898192,de98044..0000000
--- a/a
+++ b/a
@@@ -1,1 -1,3 +1,6 @@@
a
++<<<<<<< HEAD
++=======
+ b
+ c
++>>>>>>> 11fff29... abc
Так что мой вопрос: Почему существует конфликт, как Git-Diff шоу? Каковы детали работы вишневого затвора в этом случае?
Git cherry pick - это способ выбора и применения отдельных коммитов из другой ветви на текущую ветку. По существу, происходит слияние одного коммита, поэтому вы можете получить конфликты. Нет ничего плохого в том, что вы видите. –
@TimBiegeleisen Но если я запускаю 'git merge dev', нет конфликта и показывает, что я успешно слиял ... – huachengzan
' git cherry-pick dev' даже не имеет смысла для меня, потому что вы указываете название ветви довольно чем фиксация. –