2012-12-20 61 views
57

对不起,如果存在这个问题,我出奇无法找到它:/git的差异在同一分支的两个文件,同时提交

我怎么能执行相同的分支&同犯中的文件git diff两者之间?

git diff fileA.php fileB.php

(最好用易于阅读的颜色编码,该编码git报价....或者类似的什么程序BeyondCompare呢!)

回答

50

你不需要为Git的,只是使用diff fileA.php fileB.php(或vimdiff如果你想并排比较)

+13

'vimdiff'为胜利!谢谢! –

+12

这可能会起作用,但它不是git diff。这是一种完全不同的输出格式。 – daboross

+8

这并不回答原问题 – DylanYoung

2

如果你想在同一个目录中比较两个本地文件,只需使用diff。

diff fileA.php fileB.php 
+0

这并不回答原来的问题 – DylanYoung

+0

http://stackoverflow.com/questions/6877238/what-is-the-windows-equivalent-of-the -diff-command – morewry

-2

只使用常规差异。

diff -Nua fileA.php fileB.php 
+7

-1因为“你不能”不正确(请参阅:http://stackoverflow.com/a/13965200/968531) – NobodysNightmare

9

如果要比较的文件是在你的工作副本,你可以简单地使用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 
+0

注意:A [revision](https://git-scm.com)/book/en/v2/Git-Tools-Revision-Selection#_revision_selection)可以是'HEAD〜2',SHA-1,分支名称等。 – ma11hew28

+0

这对我来说只是比较来自两个不同目录的文件名:'git diff --name-only HEAD:dir1 HEAD:dir1_backup'在两个目录的'git add'之后工作。 –

3

要定期GNU的diff看起来更像是git的差异,我会建议这些参数:

diff -burN file_or_dir1 file_or_dir2 

(其中-b忽略空格,-u统一差异,-r递归,-N对待丢失的文件,/dev/null)。

它工作的很好,但仍然没有颜色和混帐式自动分页几乎不存在。如果你想解决这两个(我做的),安装colordiff和使用它像这样:

colordiff -burN file_or_dir1 file_or_dir2 | less -R 

这使输出接口,非常接近实际git diff

+4

-1因为“你不能”不正确(请参阅:http://stackoverflow.com/a/13965200/968531) – NobodysNightmare

+0

删除“你不能”,添加安装colordiff的说明,这可能是一个好的回答原来的问题。 – DylanYoung

146

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

+15

+1,因为它回答了初始问题(不管“你为什么要这样做”......可能有原因) – NobodysNightmare

+17

+1 git diff比普通diff更可读。 – daboross

+13

'--word-diff'突出显示单词的变化,而不仅仅是行 – user3148949

相关问题