1

你能解释一下 和 之间的区别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
4

2 回答 2

3

git showfor commits 将显示日志消息和文本差异。这就是你做的时候得到git show的,假设提交是 HEAD。并git show file显示 HEAD 的日志消息和文本差异,过滤为file.

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

gitrevisions手册页:

后缀:后跟路径(例如 HEAD:README);这在冒号之前的部分命名的树状对象中的给定路径上命名 blob 或树。:path (在冒号前有一个空部分,例如 :README)是下面描述的语法的一种特殊情况:记录在给定路径的索引中的内容。

另请参阅 git show 手册中的示例 ( git show --help)

于 2011-10-27T06:23:58.057 回答
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的路径上的 blob 。test.rbHEAD

于 2011-10-27T06:15:46.373 回答