“git show test.rb”和“git show HEAD:test.rb”有什么区别?

时间:2011-10-27 06:07:00

标签: git git-show

您能解释一下git show test.rbgit show HEAD:test.rb之间的区别吗?

命令git show HEAD:test.rb返回:

test file contents

git show test.rb返回:

commit a8e90b3dbf4eed03cdbb3cd3b99f98e9153c7219 
Author: Misha Moroshko <michael.moroshko@gmail.com> 
Date:   Thu Oct 27 17:03:04 2011
+1100

    asd

diff --git a/test.rb b/test.rb new file mode 100644 index
0000000..b48e119
--- /dev/null
+++ b/test.rb @@ -0,0 +1 @@
+test file contents

2 个答案:

答案 0 :(得分:3)

提交的

git show将显示日志消息和文本差异。这就是你执行git show时得到的结果,假定提交是HEAD。 git show file显示HEAD的日志消息和文本差异,过滤到file

要显示特定提交时文件的内容,请执行git show commit:file。所以git show HEAD:file在HEAD中显示文件的内容。

来自gitrevisions手册页:

  

后缀:后跟路径(例如HEAD:README);这命名blob   或者由part指定的tree-ish对象中给定路径的树   结肠前。 :path(在冒号前面有一个空的部分,例如:   :README)是下面描述的语法的一个特例:content   记录在给定路径的索引中。

另请参阅git show手册(git show --help

中的示例

答案 1 :(得分:2)

git show test.rb可以重写为git show -- test.rb。此表单更明显地表示您正在调用git show并将输出过滤为test.rb。由于git show默认显示HEAD,因此与git show HEAD -- test.rb相同。基本上,它会显示提交信息,但只为您提供特定文件test.rb的差异。

但是,git show HEAD:test.rb明确指示git show您要显示的对象是位于与test.rb相关联的树可以到达的路径HEAD的Blob提交。