为什么樱桃采摘不接受所有更改?



我的提交历史记录中有以下情况:

A1-...-A2

B1-B2-...-B3----------B4-B5
        /
C1-C2-C3

然后我做了(经过git checkout A2和干净的git status(git cherry-pick --no-commit C2..B5. 现在,C2file1.txt中引入了一条重要的台词,比如

file1.txt
-line x
+line x with new part

并且"带有新部分的行 x "存在于所有提交 C2 到 B5 中。 但是在樱桃采摘之后,变化没有出现,file1.txt看起来仍然像

...
line x
...

我期望一行"带有新零件的 x 行"。 我想,我不明白这些变化,做了

git diff HEAD C2 file1.txt
file1.txt
-line x
+line x with new part

按预期显示更改。我也检查过git diff HEAD C3 file1.txtgit diff HEAD B4 file1.txt并且git diff HEAD B5 file1.txt相同的结果。

git rev-parse HEAD导致按预期A2git status说"在分支 A 上,您的分支是最新的'origin/A'。 没有什么可承诺的,工作树干净"。

我错过了什么?有什么想法吗?

参考:
如何挑选一系列提交并合并到另一个分支中,
如何在 Git 中合并特定提交并从一个
分支拉取所有提交,将指定的提交推送到另一个分支(我希望, 答案中的评论不是问题"...同样,从一个分支到另一个分支挑选提交基本上涉及生成一个补丁, 然后应用它,从而也以这种方式失去历史。

编辑@eftshift0:git cherry-pick --no-commit C1..B5后乍一看正确:
差异显示

<<<<<<< HEAD
line x                         # current status of A2
||||||| parent of C2...
line x                         # common ancestors of C1 and A2
=======
line x with new part           # from merge (new stuff)
>>>>>>> C2...

从文档中:

git-cherry-pick - 应用一些现有引入的更改 提交概要

描述 给定一个或多个现有提交,应用每个更改 介绍,为每个提交记录一个新的提交。这需要您的 工作树要干净(HEAD 提交没有修改(。

因为你说的是C2..B5,所以不考虑C2的变化。 试试C1..B2

相关内容

  • 没有找到相关文章

最新更新