首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘`git藏品展示’和‘`git’之间有什么区别?

‘`git藏品展示’和‘`git’之间有什么区别?
EN

Stack Overflow用户
提问于 2020-04-27 09:44:33
回答 2查看 63关注 0票数 2

我可以将隐藏的更改视为:

代码语言:javascript
复制
$ 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时,它只显示没有更改的信息:

代码语言:javascript
复制
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不显示差异?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-27 10:34:41

存储实际上是一个合并提交,git show将隐藏一个看起来像接受的合并更改的diff块。

您可以使用-m选项:

代码语言:javascript
复制
git show -m stash@{0}

或者显式地请求stash@{0}与其第一个父(最后一个活动提交)之间的差异:

代码语言:javascript
复制
git diff stash@{0}^ stash@{0}

更多细节

1. stash实际上是一个合并提交

git stash实际上创建了两个提交:

  • 第一个存储索引的内容时存储。
  • 第二个存储的工作树的内容。

您可以查看stash@{0}的历史:

代码语言:javascript
复制
$ 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

2. git stash showgit show的差异

git stash show -p知道您通常希望查看stash@{0}与您的工作(它的第一个父级)之间的差异;

另一方面,git show stash@{0}将此提交显示为合并提交。

如果修改是在存储时进行的,那么这些修改将是index on xxx : ...提交的一部分,而git show在默认情况下不会显示这个差异块。

请参见git help show

对于提交,它显示日志消息和文本差异。它还以git diff-tree -cc生成的特殊格式呈现合并提交。

git help diff-tree--cc选项:

--cc 此标志以与-c选项类似的方式更改合并提交修补程序的显示方式。它暗示了-c和-p选项,并进一步压缩补丁输出,方法是省略一些乏味的块,它们的父母中的内容只有两个变体,合并结果不需要修改就会选择其中的一个。当所有宏都不感兴趣时,提交本身和提交日志消息就不会显示出来,就像在任何其他“空差异”情况下一样。

票数 2
EN

Stack Overflow用户

发布于 2020-04-27 10:16:11

隐藏是一个合并提交,它有两个父级。根据文档git show <merge-commit>git diff-tree --cc生成的特殊格式呈现合并提交。

--cc

此标志以与-c选项类似的方式更改合并提交修补程序的显示方式。它暗示了-c和-p选项,并进一步压缩补丁输出,方法是省略一些乏味的块,它们的父母中的内容只有两个变体,合并结果不需要修改就会选择其中的一个。当所有宏都不感兴趣时,提交本身和提交日志消息就不会显示出来,就像在任何其他“空差异”情况下一样。

我认为没有显示差异,因为所有的大块头都是无趣的,因此在你的情况下被省略了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61455946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档