【问题标题】:How to get Git diff of the first commit?如何获得第一次提交的 Git diff?
【发布时间】:2017-04-14 12:09:38
【问题描述】:

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

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

如何解决?还有办法查看第一次提交中添加的文件的差异吗?

【问题讨论】:

  • git show 可以工作。但第一个差异总是从 null 到整个内容。
  • @ElpieKay 可行,但也包括提交摘要。如果我这样做 git show <file>? 可以让它只打印没有提交摘要的差异
  • git show <commit> --pretty=%% | sed 1,2d%% 可以是任何只输出一行的占位符,例如%h, %t.

标签: git version-control git-diff


【解决方案1】:

你可以这样做:

git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD

4b825dc642cb6eb9a060e54bf8d69288fbee4904 是 Git 中“空树”的 id,它在每个存储库中始终可用。

【讨论】:

  • @CharlesBaley,酷,你从哪里得到这个 sha-1 代码?
  • 在 git 继续使用 sha1 时,空树的 id 不会改变。您可以使用$(printf '' | git hash-object -t tree --stdin) 以获得更好的可读性。
  • @gzh:我记得常见的sha1s。
  • 这对我来说很有趣。为什么不为此添加一个命名标志?像git diff --empty-tree head 这样的东西。类似于我们使用 --root 进行交互式变基的方式。
  • @DanielWaltrip 也许这是新的,但git diff-tree 现在有一个--root 选项,可以完全满足您的要求。
【解决方案2】:

也许可以试试:

git log -p -n 1

【讨论】:

    【解决方案3】:

    你可以试试:

    git show <first-commit-sha>

    或者如果你只有 1 个提交,你可以简单地使用:

    git show HEAD

    【讨论】:

      猜你喜欢
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      相关资源
      最近更新 更多