如何将压缩的提交视为分支?

时间:2016-04-30 09:58:24

标签: git

当我使用命令

查看我的日志树时
git log --graph --decorate --pretty=oneline --abbrev-commit

我看到下一条日志消息:

* 5bfe287 Squashed commit of the following:

是否有像--expand-squash这样的选项可以将此类提交视为分支?

git log --graph --decorate --pretty=oneline --abbrev-commit --expand-squash

* 5bfe287 Squashed commit of the following:
|\  
| * b10cbf5 Do not debug befer/after DB:: actions
| * 453e963 Debug debugger: implemented tescase for returning from debugger
|/  

2 个答案:

答案 0 :(得分:3)

不, 1 没有办法做到这一点。壁球合并根本不是合并。这是一个新的提交,它复制了组合一系列旧提交的效果,就好像您已按顺序在每个旧提交上使用List<String> hairColorArray = new ArrayList<>(); List<String> hairTypeArray = new ArrayList<String>(); 一样。新的squash提交没有到旧提交的链接,旧的提交可能甚至不在存储库中(它们可能永远不会发送给您,或者,如果您之前自己提交了这些提交,它们仍然只在您的存储库中如果你把它们留在身边,例如,通过reflogs或旧的树枝或其他任何东西)。

壁球“合并”对于某些目的是有用的,但不应该用于隐藏您可能希望稍后再次查看的单个提交。使用真正的合并。这就是真正的合并:保留实际历史。它与壁球合并的目的相反:放弃实际的历史,用一个新的,更简单的历史取而代之。

1 这假设有问题的提交是使用“squash merge”功能进行的提交。如果它是真正的合并,你可能已经看到了你关心的历史了。

答案 1 :(得分:0)

您的squash提交似乎是使用merge命令的--squash选项创建的。这创建了一个自动提交消息,其中包含您需要的所有内容,但不幸的是,它是多行的。 --pretty=oneline的{​​{1}}选项隐藏了提交消息中的后续行。

无需更改历史记录的解决方法是从git log删除--pretty=oneline选项:

git log

它的可读性差得多,可能会破坏历史作为图形的目的,但它确实为您提供了完整的多行提交信息。