Git - 没有--squash合并

时间:2014-03-24 12:40:47

标签: git merge branch squash

我更喜欢将我的功能分支与--squash合并,因为它可以让我跟踪功能的添加时间,而且通常是bisect所需的完整功能。我发现这可以很好地表示稳定分支随时间的变化状态。

但是,使用--squash分支合并时会显示在--no-merged下而不是--merged下。这有时很难跟踪每个分支的状态分支(即完成时)。我不想删除已完成的'分支,因为它已经发生,我不得不检查它们以进一步平分和其他原因(有时问题需要多个攻击路径,直到它被解决,我发现记录它是有价值的。)

有任何方法可以:

  • --merged--no-merged认识到被压扁的分支实际上已合并。

  • 归档合并(压扁)分支,因为它们不会出现在任何一个列表中,但如果我需要它们仍然可用。

如果可能,我实际上更喜欢第二种解决方案。有相当多的非当前分支累积并隐藏它们将使我更容易搜索列表中我正在寻找的当前分支。

2 个答案:

答案 0 :(得分:1)

分支是合并的,如果 - 并且只有 - 另一个分支将它们作为直接或间接父级(即,当跟随提交的父级时,您将在某个时间到达该分支)。这没有例外。

当您压缩更改时,您正在创建一个新的提交对象,该对象包含来自该一个分支的所有更改。因此,对于那个提交,您有一个“新分支”,并且旧分支保留以保持原始提交可用。现在当你合并时,你合并了那个提交,所以只有那个分支被合并。

所以不,当您压缩更改时,仍然包含单个提交的原始分支将不会被识别为已合并,只是因为它未合并。也无法更改此行为或“归档”分支。您唯一能做的就是为分支创建一个标记,作为标记,这样您就可以删除分支本身。

然而,正确的方法是合并完整的分支。特别是如果你说你希望原始分支“如果[你]需要它们仍然可用”。如果你想要那样,那么你应该将原始分支保留在历史记录中,这样它就是历史的真实部分。

如果您担心历史记录的可读性,您应该考虑始终进行非快进合并,因此您合并的分支始终单独出现在旁边。

答案 1 :(得分:0)

你可以正常合并(不用压缩)并使用--first-parent选项到你的git命令。例如

git log --first-parent

“简化”历史。这将简化功能分支到合并提交条目,您将看不到合并分支上的提交。