【问题标题】:Git merging hotfix branch into feature branch, then removing hotfix branch?Git将修补程序分支合并到功能分支,然后删除修补程序分支?
【发布时间】:2013-02-21 06:47:03
【问题描述】:

我对 Git 很陌生,但它提供的轻量级分支/合并给我留下了深刻的印象。

我的存储库中有三个分支:

master
1.1.0
1.0.x

我已经在1.0.x 分支中进行了快速修复,但我想知道是否应该立即将这些更改合并回1.1.0?还是建议等到1.1.0 分支准备好作为次要版本发布后再合并修补程序?

另外,在这张图片中:

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

如果我在1.0.x 分支上工作时提交更改,在上述合并之后,它是否会从假设的C7 提交创建一个新的水平链接(以视觉方式描绘它),具有单个父级@987654334 @,或者它会有两个父母,C5C6

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

【问题讨论】:

    标签: git version-control merge branch


    【解决方案1】:

    一旦您确定更改是好的并且需要进入该分支,我会立即合并它。无需手动操作,更早合并更有可能成功:)

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

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

    【讨论】:

    • 谢谢! “如果您的提交不再可以从任何标签访问,那么它们最终可能会被垃圾收集删除......”您可以扩展一下吗?我什么时候可以有一个无法访问的分支?在我找到有两个父母的合并提交(如 C6)之前,我是否仍然能够跟踪父母?
    • @CraigOtis 我认为@jcoder 意味着提交应该在某个时候被垃圾收集,而此时它既没有被其他提交也没有标签引用。当你删除一个分支时,这个分支就消失了,它的 reflog 也消失了。在您的图表中,删除 iss53 但所有提交都是安全的;但是删除master,C4和C6不安全。
    猜你喜欢
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2012-06-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多