两个不同文件之间的git diff

MiJ*_*Jyn 76 git diff

HEAD(最新提交)中,我有一个名为的文件foo.在我当前的工作树中,我将其重命名为bar,并对其进行了编辑.

我希望git diff fooHEADbar我目前的工作树.

Ste*_*ler 100

退房的--find-renames选择上git-diff,在https://www.kernel.org/pub/software/scm/git/docs/git-diff.html

或者明确指定路径:

git diff HEAD:full/path/to/foo full/path/to/bar

(信用来自Git的 twaggs :如何在不同的分支中区分两个不同的文件?)

  • @Doug 谢谢你的意见。以下是帮助您参考的引用:在由 Git 控制的工作树中运行命令且至少有一个路径指向工作树外部时,或者运行命令时,可以省略 `--no-index` 选项在 Git 控制的工作树之外。 (5认同)
  • 使用上面没有“HEAD:”的方法对我有用 (5认同)
  • @mitenka我认为这是不正确的。如果您查看“git diff --help”,您会发现两个文件支持的唯一模式是“git diff [<options>] --no-index [--] <path> <path>” 。`git diff ab` 仅匹配提交模式,而不匹配文件。 (4认同)
  • 我想提一提,你可以使用`git的差异<路径> <路径>`即使他们不在一个Git仓库比较任意两个文件. (3认同)
  • @Doug 这是您提到的帮助命令的引用,https://git-scm.com/docs/git-diff:显示磁盘上两个文件之间的更改。 (3认同)

mh *_*ian 29

我相信--no-index您正在寻找的是使用:

git diff [<options>] --no-index [--] <path> <path>
Run Code Online (Sandbox Code Playgroud)

如git手册中所述:

这种形式是比较文件系统上给定的两个路径。在由Git控制的工作树中运行命令并且工作树之外至少有一个路径点时,或者在由Git控制的工作树外部运行命令时,可以 忽略--no-index选项。

  • 对于利用 git 强大的不区分空格的“word diff”(例如:`git diff --no-index --word-diff file1 file2`)非常有帮助,即使对于不受 git 控制的文件也是如此。(至少对我来说是 git v2.25.1、Ubuntu v20.04。) (7认同)
  • 正是我想要的! (3认同)