上下文:我有一个实验分支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/
。
答案 0 :(得分:2)
Git不应该在协调樱桃选择方面遇到很多麻烦。在重新定位时,Git将忽略任何提交(甚至是提交的差异中的深刻),这些提交引入了已经在目标分支上引入的更改。