0

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

但是,当使用--squash合并的分支时出现 under--no-merged而不是 under --merged这使得有时很难跟踪每个分支的状态(即何时完成)。我不想删除“完成”的分支,因为碰巧我不得不检查它们以进一步平分以及其他原因(有时问题需要多条攻击路径才能解决,我发现它很有价值记录下来)。

它有任何方法:

  • 拥有--merged--no-merged承认压扁的分支实际上已被合并。

或者

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

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

4

2 回答 2

1

分支被合并,当且仅当另一个分支将它们作为直接或间接父级(即,当跟随提交的父级时,您有时会到达该分支)。没有例外。

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

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

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

如果你担心历史的可读性,你应该考虑一直进行非快进合并,这样你合并的分支总是单独出现在一边。

于 2014-03-24T12:50:22.067 回答
0

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

git log --first-parent

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

于 2014-03-24T14:52:18.070 回答