git diff同一分支上的两个文件,相同的提交


97

对不起,如果这个问题存在,我惊讶地找不到它:/

如何git diff在同一分支和同一提交中的两个文件之间执行A ?

git diff fileA.php fileB.php

(理想情况下是使用git提供...或类似于BeyondCompare程序的颜色代码的易于阅读的颜色编码!)


注意:Git:如何在不同的提交中区分两个不同的文件?比这个问题更笼统,但答案基本上与这个问题的正确答案相同,并且它没有所有这些虚假的答案,因此,我投票关闭了该答案,作为其重复。
SamB

Answers:


84

您不需要git,只需使用diff fileA.php fileB.php(如果需要并排比较,则使用vimdiff)


22
vimdiff为了胜利!谢谢!
d -_- b

24
这可能有效,但不是git diff。这是一种完全不同的输出格式。
daboross 2014年

11
这不能回答原始问题
DylanYoung '16

8
我不同意,OP尚不明确,但他提到BeyondCompare的事实意味着他并不是专门在寻找一个,git diff而是一个易于阅读的差异。同样,他接受了我所寻找的答案,这一事实也表明它确实在回答。
JaredMcAteer '16

3
仔细阅读答案。命令diff fileA fileB不是git diff fileA fileB
Matthew Hinea '17

247

如果要git diff在两个任意文件上使用,可以使用git diff --no-index <file_a> <file_b>。无需跟踪这两个文件git即可正常工作。


32
+1回答了最初的问题(不管“为什么要这么做” ...都有可能)
NobodysNightmare 2014年

19
--word-diff突出显示了单词的变化,而不仅仅是行
user3148949 2015年

2
对于使用PowerShell的我们来说,这是在存储库中获取两个文件的比较容易的方法。
杰伊·索耶

2
以下按“活动”排序时,下面2个较早投票,较少投票(且较不有用)的答案如何列出这个出色的答案???我什至不算标记为正确的答案。不管怎样,谢谢!
j_random_hacker

@daboross在GNU diffutils 3.4+(2016-08-08)中,diff具有--color可能会有所帮助(请参见unix.stackexchange.com/a/338960)。但是即使这样,如果使用diff-so-fancy,似乎仍需要特定的输出格式git diffdiff -u(请参阅stackoverflow.com/a/4857407/10095231)不起作用。
开尔文

14

如果要比较的文件在您的工作副本中,则可以diff按照其他人的指示使用,但是,如果文件处于某个修订版本,则可以为每个文件指定一个修订版本

git diff <revision_1>:<file_1> <revision_2>:<file_2>

如此处所述:https : //stackoverflow.com/a/3343506/1815446

在您的情况下(为两个文件指定相同的修订版):

git diff <revisionX>:fileA.php <revisionX>:fileB.php

注:修订HEAD~2,一个SHA-1,分公司名称等
ma11hew28

这对我有用,只是比较来自两个不同目录的文件名:git diff --name-only HEAD:dir1 HEAD:dir1_backupgit add两个目录中的a之后。
弗兰克·福尔特

1
如果没有将修订签出到工作树中,或者修改了工作树文件,并且希望与原始文档进行区分,或者根本没有工作树,例如在裸git repo中,则此方法有效。不幸的是,这个高度评价的问题具有高度评价的答案,可以回答仍然有用但又完全不同的问题:“如何在不使用git的情况下获得git-diff之类的输出?”
TrentP '18

4

为了使常规gnu diff看起来更像git diff,我建议使用以下参数:

diff -burN file_or_dir1 file_or_dir2

(其中-b忽略空格,-u统一diff,-r递归,-N将丢失的文件视为/dev/null)。

它的效果很好,但仍然没有颜色,并且几乎没有git样式的自动分页。如果要修复这两个问题(我愿意),请colordiff像这样安装和使用它:

colordiff -burN file_or_dir1 file_or_dir2 | less -R

这样提供的输出和界面非常接近实际git diff


4
-1,因为“您不能”是不正确的(请参阅:stackoverflow.com/a/13965200/968531
NobodysNightmare 2014年

删除“您不能”,添加安装colordiff的说明,这可能是对原始问题的肯定答案。
DylanYoung '16


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.