힘내 : 다른 지점에서 두 개의 서로 다른 파일을 어떻게 다른가요?


170

다른 지점에 두 개의 다른 파일이 있습니다. 하나의 명령으로 어떻게 차이점을 알 수 있습니까?

같은 것

# git diff branch1/foo.txt branch2/foo-another.txt

다른 파일을 확인하고 diff하여 복원 할 수는 있지만 매우 더러운 해결책입니다.


3
@EugenKonkov이 질문은 다른 브랜치에서 다른 파일 을 어떻게 다른지 묻는 것이므로 중복되지 않습니다 . 연결된 질문 은 다른 브랜치에서 동일한 파일 을 어떻게 다른지 묻습니다 .
Steve

답변:


214
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt

상대 경로를 사용할 수도 있습니다.

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

9
대박! 나는 확실히 그것을 추론 할 수 없었다 git help diff. 그건 그렇고 콜론 앞에 분기 이름 일 필요는 없지만 모든 종류의 커밋 참조 (예 : SHA-1 값) 일 수 있습니다.
Steve Jorgensen 2016 년

3
중요 참고 : Git on windows는 전체 itemspec이 유닉스 이름이어야합니다. 즉, branch1 : full \ path \ to \ foo.txt는 실패하지만 branch1 : full / path / to / foo.txt는 full \ path \ to \ foo.txt (분기 없음)
Eris

를 사용한 git difftool다음 삭제하면 branch2:현재 작업 트리에서 파일을 편집 할 수 있습니다 (에서 변경 사항을 가져 오기 위해 branch1)
gMale

git 버전 1.8.3.1의 Linux에서 시도했지만 상대 경로 만 허용되었습니다.
Sola Yang

21

참고 사항 : 전체 경로가 필요하지 않으며 ./상대 경로 부터 시작할 수 있습니다 . 때로는 편리 할 수 ​​있습니다.

git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt

2

두 개의 다른 브랜치에서 파일을 비교하는 방법에는 여러 가지가 있습니다. 예를 들면 다음과 같습니다.

  • 이름이 같거나 다른 경우 :

     git diff branch1:file branch2:file
    

    예:

     git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
    
  • 이름이 동일하고 현재 작업 디렉토리를 일부 분기와 비교하려는 경우에만 :

    git diff ..someBranch path/to/file
    

    예:

    git diff ..branch2 full/path/to/foo.txt
    

    이 예에서는 실제 분기의 파일을 마스터 분기의 파일과 비교합니다.

이 응답을 확인할 수 있습니다.

Git에서 두 가지 지점의 파일 비교


1

주 제외 답변-의견보기

추가하기 위해 매우 간단한 구문을 찾았습니다.

git diff <branch1> <branch2> <filepath>

예를 들어 다음과 같은 상대 참조와 함께 작동합니다.

# compare the previous committed state from HEAD with the state branch1 was 3 commits ago
git diff HEAD^ <branch1>~3 <filepath>

1
OP는 구체적으로 "다른 파일"을 요청했습니다. 당신의 대답은 두 개의 다른 가지에서 동일한 파일을 비교하는 것입니다.
Etienne Miret

@EtienneMiret 당신은 절대적으로 맞습니다, 그 중요한 점을 놓쳤습니다. 주 제외 답변.
RomainValeri

-1

git diff적용 할 시작 및 범위를 지정할 수 있습니다 . 범위는 ..표기법으로 표시됩니다.

branch1=somebranch
branch2=someotherbranch
git diff ${branch1}..${branch2} -- file_path

이것은 동일한 파일을 두 가지에서만 비교하는 것입니다. 문제는 두 가지의 다른 두 파일에 관한 것이 었습니다.
피란
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.