git - `git stash show` 和 `git show` 有什么区别?
问题描述
我可以将隐藏的更改视为:
$ git stash show -p stash@{0}
diff --git a/t/database/test.t b/t/database/test.t
index 3e9dcf87..4326d7e0 100644
--- a/t/database/test.t
+++ b/t/database/test.t
@@ -249,6 +249,8 @@ begin
loop raise notice ''before: %%'', r; end loop;
end if;
+ -- delete OLD if NEW.sys_period is empty
+ -- or create pid to track full version history. See transaction time
UPDATE %1$s
SET
-- NOTICE: Here new values for sys_time column should be now() instead of sys_time()
但是当我这样做git show stash@{0}
或git show -p 803d7231
它只显示信息而不更改时:
commit 803d7231aebc79819d69b5e8505c4be7f747441f (refs/stash)
Merge: 2b30b862 3f34d241
Author: Eugen Konkov <kes-kes@yandex.ru>
Date: Mon Apr 27 12:34:43 2020 +0300
On bi-temporal: TODO: Bi-Temporal improvement: track how data is changed
为什么git show
不显示差异?
解决方案
存储实际上是一个合并提交,并且git show
会隐藏一个看起来像是已接受的合并更改的差异块。
您可以使用以下-m
选项:
git show -m stash@{0}
stash@{0}
或明确询问与其第一个父级(您的最后一次活动提交)之间的差异:
git diff stash@{0}^ stash@{0}
更多细节
1.Astash
其实是一个merge commit
git stash
实际上创建了两个提交:
- 第一个存储时存储索引的内容
- 第二个存储您存储的工作树的内容
你可以看看历史stash@{0}
:
$ git log --graph --oneline stash@{0}
* afffe0c (refs/stash) WIP on master: 6615405 commit: created file "a.txt"
|\
| * 6ebdc03 index on master: 6615405 commit: created file "a.txt"
|/
* 6615405 (HEAD -> master) commit: created file "a.txt"
* 170d9f8 empty
git stash show
2.和之间的区别git show
git stash show -p
知道您通常想查看stash@{0}
与您的工作(其第一个父级)之间的差异;
git show stash@{0}
,另一方面,将此提交显示为合并提交。
如果修改是在您存储时暂存的,那么这些修改将成为index on xxx : ...
提交的一部分,并且git show
默认情况下不会显示此差异块。
对于提交,它显示日志消息和文本差异。它还以 git diff-tree --cc 生成的特殊格式呈现合并提交。
--cc
这个标志改变了合并提交补丁的显示方式,类似于 -c 选项。它暗示了 -c 和 -p 选项,并通过省略无趣的大块来进一步压缩补丁输出,这些大块的父项中的内容只有两个变体,并且合并结果选择其中一个而无需修改。当所有大块都无趣时,不会显示提交本身和提交日志消息,就像在任何其他“空差异”情况下一样。
推荐阅读
- javascript - 向元素添加“transitionend”事件监听器只会导致动画反向触发
- filter - 如何在 OpenUI5 表列上设置过滤器以触发过滤
- python - 如何使用计数器打印出字典中的计数值
- c# - 如何从 Nuget 包动态加载 Mvc 控制器。Docker 容器问题
- c# - C# asp dot net MVC中的注册管理员批准验证
- javafx - 如何将具有不同文本大小的标签与底部对齐?
- javascript - 检查图像是否存在会产生 403 错误
- android - Visual Studio 2019 更新后 Android SDK 损坏
- visual-studio-code - 如何在没有鼠标的情况下在 PeekView 窗口中切换窗口
- ansible - ansible'raw','shell'和'command'有什么区别?