当我使用命令
查看我的日志树时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
|/
答案 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
它的可读性差得多,可能会破坏历史作为图形的目的,但它确实为您提供了完整的多行提交信息。