我创建了一个仓库,在里面创建了一个文件,向文件中添加一些内容并提交了这个文件。现在,我想查看该提交的差异,理想情况下应该显示被添加的文件和其中添加的行。
然而,git diff HEAD^ HEAD
返回 fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
,可能是因为这是该仓库的第一个提交。
如何解决这个问题?是否仍有办法查看在第一个提交中添加的文件的差异?
我创建了一个仓库,在里面创建了一个文件,向文件中添加一些内容并提交了这个文件。现在,我想查看该提交的差异,理想情况下应该显示被添加的文件和其中添加的行。
然而,git diff HEAD^ HEAD
返回 fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
,可能是因为这是该仓库的第一个提交。
如何解决这个问题?是否仍有办法查看在第一个提交中添加的文件的差异?
您可以做:
git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD
4b825dc642cb6eb9a060e54bf8d69288fbee4904
是 Git 中“空树”的 ID,每个仓库中都始终可用。
$(printf '' | git hash-object -t tree --stdin)
以获得更好的可读性。 - CB Baileygit diff --empty-tree head
。就像我们在交互式变基时有 --root
标志一样。 - Daniel Waltrip现在Git已经对SHA256提供了实验性支持,同时还有从SHA1迁移到SHA256的过渡计划,因此您不能再依赖空树的哈希常量。相反,最好根据您的存储库使用的哈希函数动态检索它:
git diff $(git hash-object -t tree /dev/null)
git log -p -n 1
git show
命令可以使用。但第一个差异(diff)始终是从 null 到整个内容。 - ElpieKaygit show <文件>
,有可能只打印差异而不是提交说明吗? - Ali%%
可以是任何占位符,例如%h
,%t
,只输出一行。 - ElpieKay