如何暂时取消分支?

时间:2010-07-15 08:29:01

标签: git branch

我从分支A开始了一个功能分支B.然后我对两者进行了一些更改。将A合并到B然后合并到A导致两个磁头指向相同的合并提交(这是我想要的,因为A中的更改也应该影响分支B)。现在有一段时间只有A会经历变化。

有没有办法让B坚持A直到我结账B并在那里提交?我当然可以删除B并在再次分支时重新创建它,或者使用A并将其合并到B中再重新分支,但这一切都依赖于我记住我的意图......

5 个答案:

答案 0 :(得分:2)

不,你不能像你描述的那样将 B 粘贴到 A
您已经列出了备选选项。我只是删除了 B ,这确保你记得你必须再次分支:)

答案 1 :(得分:2)

我认为B的真实姓名足够令人回味,仅仅在git branch的输出中或在gitk --all的显示中看到它就足以提醒您最终想要添加的酷炫新功能。

下次你对A进行更改并想让B赶上来时,请检查B并将其推进到A的头部。你写道A和B目前都指向同一个提交。当你对A做出改变时,B的历史仍将包含A中没有的任何内容,所以这是一个简单的变形:

git rebase A B

上一个命令检出B,所以当你准备继续工作A:

git checkout A

答案 2 :(得分:1)

如果你再次将A合并到B,它应该向前跳转以满足A,然后你再次开始反对B.

答案 3 :(得分:1)

你可以让B成为一个补丁队列(使用类似quilt之类的东西)在A之上。然后你可以随意工作;每次要更新到A的最新版本时,都会弹出补丁,更新A,然后再次对补丁进行模糊处理并修复损坏的内容。

Mercurial实际上有一个内核扩展,可以轻松完成这项工作并保持修补程序的版本控制。

我一直都是这样做的,当你正在玩弄一堆尚未准备好提交的想法时,它确实很有效。

这就是你要找的东西吗?

答案 4 :(得分:1)

假设您的主代码行有一个分支。然后你决定实现一个新的foo功能,并为此创建一个新的分支 foo 。然后,您很乐意提交 foo ,开发您的功能,并发现您的分支中存在错误。在这种情况下,通常的git工作流程是签出 master 修复那里的bug。然后,当您继续开发功能时,请结帐 foo ,并使用git merge master将其与主分支保持同步。然后你就把所有东西整理好了,不需要在任何地方粘贴任何东西。

(或者,您可以忘记更新 foo 并在以后将 foo 合并到分支时合并更改。)