【问题标题】:Can cherry-picking from a branch cause trouble rebasing this branch to master从分支中挑选樱桃是否会导致将该分支重新设置为 master 的麻烦
【发布时间】:2011-11-05 13:51:51
【问题描述】:

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

由于crazy-idea 中的混乱会使master 的历史变得混乱,因此创建了一个新分支good-idea 来将src/ 中的更改合并到master 中。 Convince 建议我更改 src/ 中仍保留在 crazy-idea 中的文件,然后从 good-idea 中挑选提交。

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

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

你们认为什么更聪明?

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

期间遇到了冲突
git rebase master

crazy-idea。将来我只会在一个分支中引入更改,并且只有在我知道它或多或少被放弃时才使用樱桃采摘。

编辑我解决了我的情况如下: 在 src/ 中有 N 次提交更改。可以说最后一个非src/ 更改提交有消息'foobar'。变基失败后:

$ 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/

【问题讨论】:

    标签: git merge rebase cherry-pick


    【解决方案1】:

    Git 不应该有太多麻烦来协调精选。在变基时,Git 将忽略任何引入了已在目标分支上引入的更改的提交(甚至是提交差异中的大块)。

    【讨论】:

    • 不错。我的猜测/希望是 git 会忽略提交的来源,而只是在变基时查看内容。顺便说一句,您是否真的按照我描述的方式使用了 git,或者您只是相信它会处理得很好。
    • 我做了一些相当复杂的变基,我已经看到它正确地丢弃了已经集成的整个提交。
    • 听起来很棒。如果成功的话,我会在一两天内标记你的答案:P 谢谢!
    • 奇数。对于真正复杂的分支/修补模式,协调事情可能会有些麻烦,您只需要修复合并冲突。
    猜你喜欢
    • 2016-05-30
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2018-12-28
    • 2014-10-08
    相关资源
    最近更新 更多