git diff 같은 브랜치의 두 파일, 같은 커밋


97

이 질문이 있으면 죄송합니다. 의외로 찾을 수 없습니다.

git diff동일한 브랜치 및 동일한 커밋 내에서 두 파일간에 어떻게 수행 할 수 있습니까?

git diff fileA.php fileB.php

(이상적으로는 gitBeyondCompare 프로그램 이 제공하는 것과 유사한 읽기 쉬운 색상 코딩을 사용 합니다!)


참고 : Git : 서로 다른 커밋에서 서로 다른 두 파일을 비교하는 방법은 무엇입니까? 이 질문보다 약간 더 일반적인, 그러나 대답은 본질적으로 동일하다 이 하나의 정답 , 나는 그것의 잘 속는 사람으로이를 닫 투표했습니다 그래서 그 가짜 모든 답변이 없습니다.
SamB

답변:


84

당신은 그것을 위해 git이 필요하지 않습니다, 그냥 사용하십시오 diff fileA.php fileB.php(또는 병렬 비교를 원한다면 vimdiff)


22
vimdiff승리를 위해! 감사!
D B -_-

24
이것은 작동 할 수 있지만 git diff는 아닙니다. 완전히 다른 출력 형식입니다.
daboross

11
이것은 원래의 질문에 대답하지 않습니다
DylanYoung

8
나는 동의하지 않는다. OP는 명확하지 않았지만 그가 BeyondCompare를 언급했다는 사실은 그가 특별히 git diff읽기 쉬운 diff를 찾고 있지 않다는 것을 의미한다 . 또한 그가 내 대답을 그가 찾고있는 것으로 받아 들였다는 사실은 그것이 실제로 대답을한다는 것을 나타냅니다.
JaredMcAteer

3
답을 자세히 읽으십시오. 명령은 diff fileA fileB없습니다git diff fileA fileB
마태 복음 Hinea

247

당신이 사용하려는 경우 git diff두 개의 임의의 파일에 당신은 사용할 수 있습니다 git diff --no-index <file_a> <file_b>. 두 파일을 추적 할 필요가 없습니다.git .


32
첫 번째 질문에 답하기 때문에 +1 ( "왜 그렇게 하시겠습니까"에 관계없이 ... 이유가있을 수 있음)
NobodysNightmare

19
--word-diff하이라이트뿐만 아니라 라인, 단어 변경
user3148949

2
PowerShell을 사용하는 우리에게는 저장소에서 두 파일의 차이를 얻는 훨씬 쉬운 방법입니다.
Jay Soyer

2
"활성"을 기준으로 정렬 할 때 2 개의 이전, 투표율이 낮은 (및 덜 유용함) 답변 아래에 나열된이 우수한 답변은 어떻게됩니까 ??? 나는 정답으로 표시된 답도 계산하지 않습니다. 어쨌든 감사합니다!
j_random_hacker

@daboross에서 GNU는 3.4 이상 (2016년 8월 8일를) Diffutils의 diff가지고 --color있는 힘의 도움 (참조, unix.stackexchange.com/a/338960 ). 그러나 그렇다하더라도, 사용하는 경우 diff-so-fancy, 특정 출력 형식을 요구하는 것 같다 git diff. diff -u( stackoverflow.com/a/4857407/10095231 참조 ) 작동하지 않습니다.
kelvin

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_backup 효과적 git add이었습니다. 두 디렉토리 중 하나 에서 작동합니다 .
Frank Forte

1
이것은 개정판이 작업 트리로 체크 아웃되지 않았거나 작업 트리 파일이 수정되어 원본을 비교하고 싶거나 베어 git 저장소에서와 같이 작업 트리가 전혀없는 경우 작동합니다. 이 높은 등급의 질문에는 여전히 유용하지만 매우 다른 질문에 대한 높은 등급의 답변이있는 것은 유감입니다. "어떻게 git을 사용하지 않고 출력과 같은 git-diff를 얻을 수 있습니까?"
TrentP

4

일반 gnu diff를 git diff처럼 보이게하려면 다음 매개 변수를 권장합니다.

diff -burN file_or_dir1 file_or_dir2

( -b공백 무시, -u통합 차이, -r재귀, -N누락 된 파일을/dev/null ).

훌륭하게 작동하지만 여전히 색상이 없으며 git 스타일 자동 페이징이 거의 없습니다. 둘 다 고치려면 (I do) colordiff다음과 같이 설치 하고 사용하십시오.

colordiff -burN file_or_dir1 file_or_dir2 | less -R

이것은 실제에 매우 가까운 출력과 인터페이스를 제공합니다 git diff.


4
-1 왜냐하면 "you ca n't"가 잘못 되었기 때문입니다 (참조 : stackoverflow.com/a/13965200/968531 )
NobodysNightmare

"할 수 없습니다"를 제거하고 colordiff 설치 지침을 추가하면 원래 질문에 대한 정답이 될 수 있습니다.
DylanYoung 2016-04-27


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.