서로 다른 두 지점의 파일을 비교하는 방법은 무엇입니까? 위해 비교 도구를 찾고 있지 않습니다 (비욘드

한 지점에서 잘 작동하고 다른 지점에서 깨진 스크립트가 있습니다. 두 버전을 나란히보고 다른 점을보고 싶습니다. 이를 수행 할 수있는 방법이 있습니까?

분명히 하기 위해 비교 도구를 찾고 있지 않습니다 (비욘드 비교 사용). 마스터 버전을 현재 분기 버전과 비교하여 변경된 내용을 확인할 수있는 git diff 명령을 찾고 있습니다. 나는 합병이나 다른 일이 아닙니다. 난 그냥 같은 말을하고 싶어

git diff mybranch/myfile.cs master/myfile.cs



답변

git diff 두 커밋의 차이점을 보여줄 수 있습니다.

git diff mybranch master -- myfile.cs

또는 동등하게 :

git diff mybranch..master -- myfile.cs

어느 한쪽 인 경우, 후자의 구문을 사용 HEAD이 생략 될 수있다 (예 master..비교 masterHEAD).

당신은 또한 mybranch...master( git diff문서에서 )에 관심이있을 수 있습니다 :

이 양식은 <commit>두 가지 공통 조상에서 시작 하여 두 번째까지 포함 된 분기의 변경 사항을 확인하기위한 것 <commit>입니다. git diff A...B와 같습니다 git diff $(git-merge-base A B) B.

다시 말해,이 방식은 master분기 된 mybranch이후로 변경 사항이 달라 지지만 이후에 새로운 변경 사항은 없습니다 mybranch.


모든 경우에 --파일 이름 앞에 있는 구분 기호는 명령 행 플래그의 끝을 나타냅니다. 인수가 커밋 또는 파일을 참조하는 경우 Git이 혼동하지 않는 한 선택 사항이지만 포함시키는 것은 나쁜 습관이 아닙니다. 몇 가지 예는 https://stackoverflow.com/a/13321491/54249 를 참조 하십시오 .


동일한 인수가 git difftool구성된 경우 동일한 인수를 전달할 수 있습니다 .


답변

당신은 이것을 할 수 있습니다 :
git diff branch1:path/to/file branch2:path/to/file

difftool을 구성한 경우 다음을 수행 할 수도 있습니다.
git difftool branch1:path/to/file branch2:path/to/file

관련 질문 :
시각적 diff 프로그램으로 git diff 출력을 보는 방법


답변

보다 현대적인 구문 :

git diff ..master path/to/file

이중 점 접두사는 “현재 작업 디렉토리에서”까지를 의미합니다. 당신은 또한 말할 수 있습니다 :

  • master..즉, 위의 반대입니다. 이것은와 동일합니다 master.
  • mybranch..master, 현재 작업 트리 이외의 상태를 명시 적으로 참조합니다.
  • v2.0.1..master즉, 태그를 참조합니다.
  • [refspec]..[refspec]기본적으로 git에 대한 코드 상태로 식별 가능한 모든 것.

답변

서로 다른 두 가지의 파일을 비교하는 방법에는 여러 가지가 있습니다.

  • 옵션 1 : n 특정 분기에서 다른 특정 분기로 파일을 비교하려는 경우 :

    git diff branch1name branch2name path/to/file
    

    예:

    git diff mybranch/myfile.cs mysecondbranch/myfile.cs
    

    이 예에서는“mybranch”분기의 파일을“mysecondbranch”분기의 파일과 비교합니다.

  • 옵션 2 : 간단한 방법 :

     git diff branch1:file branch2:file
    

    예:

     git diff mybranch:myfile.cs mysecondbranch:myfile.cs
    

    이 예는 옵션 1과 유사합니다.

  • 옵션 3 : 현재 작업 디렉토리를 일부 분기와 비교하려는 경우 :

    git diff ..someBranch path/to/file
    

    예:

    git diff ..master myfile.cs
    

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


답변

나는 단순히 git diff branch1 branch2 path/to/file

파일 간의 차이점을 확인합니다. 변경 사항은 branch1빨간색으로 표시됩니다. 변경 사항은 branch2녹색입니다.

branch1과거와 branch2미래 라고 가정합니다 . diff에서 분기의 순서를 반대로 바꾸어 이것을 되돌릴 수 있습니다.git diff branch2 branch1


답변

현재 분기에 대해 diff를 만들고 싶다면 생략하고 다음을 사용할 수 있습니다.

git diff $BRANCH -- path/to/file

이렇게하면 현재 분기에서 참조 분기 ( $BRANCH)로 다릅니다 .


답변

@dahlbyk가 제안한 답변에 동의합니다. 코드 검토를 위해 diff를 diff 파일에 쓰려면 다음 명령을 사용하십시오.

git diff branch master -- filepath/filename.extension > filename.diff --cached