如何获得第一次提交的Git diff?

Cli*_*ote 27 git version-control git-diff

我创建了一个repo,在其中创建了一个文件,在文件中放入了一些内容,并提交了文件.现在,我希望看到该提交的差异,理想情况下应该显示添加的文件和添加到其中的行.

但是,git diff HEAD^ HEAD返回fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.,可能是因为这是对repo的第一次提交.

怎么解决这个问题?还有办法查看第一次提交中添加的文件的差异吗?

CB *_*ley 75

你可以做:

git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD
Run Code Online (Sandbox Code Playgroud)

4b825dc642cb6eb9a060e54bf8d69288fbee4904 是Git中"空树"的id,它总是在每个存储库中都可用.

  • 这对我来说很有趣.为什么不为此添加命名标志?像`git diff --empty-tree head`之类的东西.类似于我们如何使用`--root`进行交互式rebase. (11认同)
  • 当git继续使用sha1时,空树的id不会改变.你可以使用`$(printf''| git hash-object -t tree --stdin)`来提高可读性. (6认同)
  • @gzh:我记得常见的sha1s. (6认同)
  • @CharlesBaley,酷,你在哪里得到这个sha-1代码? (5认同)

小智 6

现在,Git 对 SHA256 提供了实验性支持,并制定了将哈希函数从 SHA1 迁移到 SHA256 的过渡计划,您不能再依赖空树的哈希常量。相反,最好根据您的存储库使用的任何哈希函数动态检索它:

git diff $(git hash-object -t tree /dev/null)
Run Code Online (Sandbox Code Playgroud)