要重新发布此行为,只需初始化一个新的git存储库,创建一个文件,添加并提交。现在再次编辑此文件(此时不添加,不提交)和存储。结果应如下所示:
$ git log stash@{0} --graph --decorate
* commit C (refs/stash)
|\ Merge: A C
| | WIP on master: A init
| |
| * commit B
|/ index on master: A init
|
* commit A (HEAD, master)
init
A和C之间的差异显示了预期的结果:
$ git diff stash@{0}^..stash@{0}
diff --git a/file b/file
index b1b7161..51bdcb4 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
+a new uncommited change
init
我希望命令的输出相同
$ git log stash@{0}
但没有补丁。为什么会这样? (这与存储无关:如果使用空提交创建历史记录,则使用相同的行为,no-ff,...)
答案 0 :(得分:2)
为什么会这样?
因为git log -1 -p
没有显示带有多个父项的任何提交的差异。需要其他选项。通常,您可能希望选择git show
以显示一个提交以及修补程序,这大部分是等效的,但添加--cc
作为默认选项。明确添加可以使您获得git log
的差异。
还有其他控制合并提交显示的选项:您可以使用-c
获取更详细的--cc
形式,-m
以获得所有父母的常规差异( A和B),或将其与--first-parent
组合以获得从A到C的普通差异。