解决樱桃挑选冲突后,Git不允许修改

时间:2018-03-20 08:04:07

标签: git

cherry-picked提交并解决了冲突,添加了它们,现在当我尝试执行git修改时失败并显示以下消息。

  

致命:你正在挑选樱桃 - 无法修改。

为什么git会给出这个消息,有没有办法告诉它一切正常?

4 个答案:

答案 0 :(得分:3)

我手动删除.git/CHERRY_PICK_HEAD现在git不知道我做了一个挑选,​​所以修改工作就像是正常的提交修改。

cherry-pick --continue添加了一个新的提交消息,并且需要重新绑定这是一个麻烦。

答案 1 :(得分:1)

行为在documentation

中定义

您需要的是

  

<强> - 继续
   使用中的信息继续正在进行的操作    git的/音序。可以在解决a中的冲突后继续使用    失败的挑选或恢复。

答案 2 :(得分:1)

之前你似乎做了一个cherry-pick,由于冲突而失败了。因此,git认为你仍然处于挑选的中间,因为它希望你修复冲突,添加冲突的文件并运行git cherry-pick --continue

这里你的选择是运行git cherry-pick --abort,这将中止樱桃选择,即将冲突的文件返回到之前的状态,可能会丢失更改,或运行git cherry-pick --continue,这将继续樱桃选择。当你不记得使用樱桃选择的时间和内容时,这可能是更好的选择,尽管你应该在--continue命令之前和之后密切关注你的存储库。

这两个命令都会让你退出樱桃挑选状态并允许你进行修改。

答案 3 :(得分:0)

在运行cherry-pickrebasemerge等操作时,git会跟踪基本提交的几个信息。

防止修改基本提交似乎是合理的安全。

我建议你以某种方式完成cherry-pick,然后使用rebase -i来修改你想要的提交顺序。

如果我们使用以下名称:

--*--*-- ... --A--B <- HEAD
      \
       *-- ... X <- cherry-picked commit

# you are currently on B, you run :
git cherry-pick X

如果您希望达到:

--*--*-- ... --A--B'--X' <- cherry-picked version of X
      \           ^
       \          a modified version of B
        *-- ... X
你可以:

# add the modifications intended for B' :
git add -p [files]
# create a regular commit, using "git commit" :
git commit

--*--*-- ... --A--B--C

# complete the cherry-pick process :
git add [files with solved conflicts]
git cherry-pick --continue

--*--*-- ... --A--B--C--X'

# use 'rebase -i A' to squash B and C into one commit
git rebase -i A
# set the rebase actions to "squash C into B"

# the result should be what you expect :
--*--*-- ... --A--B'--X'