我从两年前选择了一个提交并修复了冲突(以及实施更改),但是当我尝试从5个月前选择提交时:
$: git cherry-pick 9f73972f3f619f1357269493e01f07c500d61ed9
On branch get_ndt_up_to_staging_branch
You are currently cherry-picking commit 9f73972.
nothing to commit, working tree clean
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git reset'
这是怎么回事?当我查看github时,有问题的提交会对各种文件进行更改。
我做错了吗?
当我修复所有冲突时,我提交了它们并试图做出挑选 - 继续,它给了我同样的错误。樱桃挑错了吗?
答案 0 :(得分:3)
如果提交中的更改已经在当前版本的代码中,通常会出现此错误。在这种情况下,git决定cherry-pick会导致提交不做任何更改,因此它会询问您是否允许使用--allow-empty
进行空提交。
如果您修复了冲突并且分辨率的结果再次与工作树和当前HEAD的当前状态匹配,那么您将得到相同的错误。
我建议您仔细查看git show 9f73972
并与工作树和存储库的当前状态进行比较。
答案 1 :(得分:-1)
听起来修复冲突的结果是没有必要进行提交。
例如,考虑一个包含单字拼写修复的提交:
--- a/text.txt
+++ b/text.txt
@@ -nn,1 +nn,1 @@
some context
is here
-and there was a tyop
+and there was a typo
in one of the
lines
假设你决定挑选这个提交。在当前(HEAD
)提交中,此文件具有:
some context
is here
but there are no typos
in one of the
lines
挑樱操作会告诉您,您正在挑选的更改(尝试将“拼写错误”改为“拼写错误”)与您实际使用的版本之间存在冲突(完全没有那条线。
当您查看文件并考虑它时,您可能会选择使用最新的行,该行没有拼写错误。然后,应用拼写错误修复的效果是不对源进行更改。
当您运行git cherry-pick --continue
时,Git会告诉您您没有进行任何更改。你现在必须决定:
git commit --allow-empty
。git cherry-pick --abort
(完全结束操作)。这也拼写为git reset
(我更喜欢git cherry-pick --abort
拼写)。