可以从分支机构挑选樱桃,这会让这个分支变得难以掌握

时间:2011-08-28 18:10:06

标签: git merge rebase cherry-pick

上下文:我有一个实验分支crazy-idea,我在一个专门的子目录madness/{src,docs}中做了一些疯狂的事情。大量的提交,带有笔记,图片,hacky脚本来创建情节。现在我已经完全理解我正在做什么,现在可以通过添加新函数和更改现有函数来编辑src/中的实际源文件。

由于crazy-idea中的混乱会混淆master的历史记录,因此创建了一个新的分支good-idea,以将src/中的更改合并到master中。说服建议我改变src/中仍然在crazy-idea中的文件,然后从good-idea内挑选提交。

现在我的问题:鉴于good-idea已合并为master,并且在此事件之后,某些提交已在master中完成。当我回到crazy-idea以进一步理解我的想法的其他方面时,src/在重新掌握主人时会遇到麻烦吗?

另一种方法是将src/单独留在crazy-idea内,制作子目录的副本,并在good-idea直接编码时以这种方式查看我的笔记。

你们有什么建议更聪明?

编辑好吧,正如预期的那样,我在

期间遇到了冲突
git rebase master
crazy-idea中的

。将来我只会在一个分支中引入更改,并且只有当我知道它或多或少被抛弃时才会使用樱桃挑选。

编辑我解决了我的情况如下: 在src/中有N个提交有变化。让我们说最后一次非src/更改提交的消息是“foobar”。在rebase失败后:

$ git rebase --abort
$ git reset --hard HEAD^
HEAD is now at ...
# more hard resets, I think actually N
HEAD is now at ... foobar
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying ..
...

完成。这显然不像我希望的那样直截了当,但也不是太糟糕。我想我会走这条路而不是复制madness/

1 个答案:

答案 0 :(得分:2)

Git不应该在协调樱桃选择方面遇到很多麻烦。在重新定位时,Git将忽略任何提交(甚至是提交的差异中的深刻),这些提交引入了已经在目标分支上引入的更改。