我知道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显示的冲突? 在这种情况下,cherry-pick的工作细节是什么?
git merge dev
,就不会出现冲突,并且显示我已经成功合并了... - L_Kdev
指的是分支dev
的最后一次提交,所以我认为git cherry-pick dev
没有任何问题。 - L_K