답변:
git diff
두 커밋의 차이점을 보여줄 수 있습니다.
git diff mybranch master -- myfile.cs
또는 동등하게 :
git diff mybranch..master -- myfile.cs
어느 한쪽 인 경우, 후자의 구문을 사용 HEAD
이 생략 될 수있다 (예 master..
비교 master
에 HEAD
).
당신은 또한 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 --name-status branch1..branch2
(아마도 명백하지만 다른 사람과 같은 문제가있는 경우 언급 할 것이라고 생각했습니다).
당신은 이것을 할 수 있습니다 :
git diff branch1:path/to/file branch2:path/to/file
difftool을 구성한 경우 다음을 수행 할 수도 있습니다.
git difftool branch1:path/to/file branch2:path/to/file
branch1:./file
. 파일이 분기 (예 :) 사이의 별도 위치에있는 경우에도 유용합니다 git diff branch1:old/path/to/file branch2:new/path/to/file
.
git diff branch1 branch2 path/to/file
.
서로 다른 두 가지의 파일을 비교하는 방법에는 여러 가지가 있습니다.
옵션 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
파일을 비교하는 두 가지 시나리오가 있습니다.
시나리오 1 : 원격 지점의 파일 비교 (두 지점 모두 원격 저장소에 있어야 함)
시나리오 2 : 로컬 작업 영역 사본의 로컬 파일을 원격 저장소의 파일 비교하십시오.
논리는 간단합니다. diff에 두 개의 브랜치 이름을 제공하면 항상 원격 브랜치를 비교하고 하나의 브랜치 이름 만 제공하면 로컬 작업 복사본과 원격 리포지토리 (제공 한 이름)를 항상 비교합니다. range를 사용하여 원격 저장소를 제공 할 수 있습니다.
예 : 지점 체크 아웃
git checkout branch1
git diff branch2 [filename]
이 경우 파일 이름을 제공하면 파일 이름의 로컬 사본과 이름이 " branch2 "인 원격 분기를 비교합니다 .
git diff branch1 branch2 [filename]
이 경우 이름이 " branch1 인 원격 분기의 파일 이름을 비교합니다. "과 " branch2 "
git diff ..branch2 [filename]
이 경우에는 " branch1 "과 " branch2 " 라는 원격 브랜치의 파일 이름을 비교 합니다. 위와 동일합니다. 그러나 방금 다른 지점에서 지점을 만든 경우 "마스터"라고 말하고 현재 지점이 원격 저장소에 없으면 원격 지점을 비교합니다. 마스터 "와 원격 " branch2를 비교합니다. "를 합니다.
유용하길 바랍니다.
git diff branch1 branch2 myfile.cs
. (--
최대 2 개의 수정 인수 만 취할 수 있으므로 더 이상 필요하지 않아야합니다.)