您能解释一下git show test.rb
和git 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
答案 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提交。