2013-03-06 103 views
3

我对Git非常陌生,但对它提供的轻量级分支/合并印象非常深刻。Git合并修补程序分支到功能分支,然后删除修补程序分支?

我有三个分支在我的仓库:

master 
1.1.0 
1.0.x 

我已在1.0.x分公司速战速决,但我不知道我是否应该立即合并这些更改回1.1.0?或者是否建议等到1.1.0分支准备好作为次要版本发布以合并修补程序?

而且也,此图像中:

git-scm branching

我假装iss53 = 1.0.xmaster = 1.1.0的这个例子。一旦我的1.0.x修补程序分支中的更改合并回1.1.0功能分支,我可以继续在1.0.x分支上工作吗?

如果我犯了变化,而工作的1.0.x分公司,上述合并后,将它只是从一个假设C7创建一个新的水平链路(以图片在视觉)承诺,与单亲C5,还是会有两个父母,C5C6

git-book(Git - Basic Branching and Merging)的这一部分也提到在完成分支后删除分支,但不幸的是并没有显示图表之后的样子。当然提交仍然存在 - 标签是否被删除? (在上面的例子中为iss53)。一旦该分支被移除,如果您发现问题53未完全修复,可以继续从C5工作,创建另一个iss53分支,或者您是否必须给它一个不同的分支名称,如iss53_2

回答

1

只要你确定改变是好的并且需要进入该分支,我会立即合并它。先前合并更有可能在没有手动操作的情况下成功:)

如果您删除分支,树将保持完全相同,只有分支的标签消失。如果您有任何不再可从任何标签访问的提交,那么它们最终可能会被垃圾收集删除,但它会将它们保留几周,而且这不是这种情况,因为您的所有提交在某个分支中仍然可以访问。

您可以再次轻松地创建分支,只需执行“git checkout -b iss53 xxxxxx”,其中xxxxx是您希望基于其提交的提交十六进制代码。 git reflog可以帮助您找到所需的提交,因为它显示了所有最近的历史记录。

+0

谢谢! “如果您有任何不再可从任何标签访问的提交,那么它们最终可能会被垃圾收集删除......”您可以扩展它吗?我何时可以有一个无法访问的分支?在我发现有两个父母的合并提交(如C6)之后,我是否仍然能够跟踪父母的方式? – 2013-03-06 17:27:40

+1

@CraigOtis我认为@jcoder意味着提交应该在某些时候被垃圾回收,而不会被其他提交或标签引用。当你删除一个分支时,该分支不见了,它的reflog也不见了。在你的图中,删除'iss53'但所有提交都是安全的;但删除主人,C4和C6是不安全的。 – 2013-03-07 06:04:24

相关问题