질문자 :Micah
한 지점에서는 잘 작동하고 다른 지점에서는 손상된 스크립트가 있습니다. 두 버전을 나란히 놓고 무엇이 다른지 보고 싶습니다. 이 작업을 수행하는 방법이 있습니까?
분명히하기 위해 나는 비교 도구를 찾고 있지 않습니다 ( Beyond Compare 사용). 마스터 버전을 현재 분기 버전과 비교하여 변경된 사항을 확인할 수 있는 Git diff 명령을 찾고 있습니다. 나는 병합이나 다른 것의 중간에 있지 않습니다. 나는 단지 다음과 같은 말을 하고 싶다.
git diff mybranch/myfile.cs master/myfile.cs
git diff
는 두 커밋의 차이점을 보여줄 수 있습니다.
git diff mybranch master -- myfile.cs
또는 동등하게:
git diff mybranch..master -- myfile.cs
파일에 대한 상대 경로를 지정해야 합니다. 파일이 src 디렉토리에 있다면 그래서, 당신은 말할 것 src/myfile.cs
대신 myfile.cs
.
후자의 구문을 사용하면 어느 쪽이 HEAD
이면 생략될 수 있습니다(예: master..
는 master
를 HEAD
와 비교).
mybranch...master
관심이 있을 수도 있습니다( git diff
문서에서 ).
이러한 형태는 제를 함유하는 분기 최대 변화를 볼 수있다 <commit>
모두의 공통 조상부터 <commit>
. git diff A...B
는 git diff $(git-merge-base AB) B
합니다.
mybranch
에서 분기되었기 때문에 master
에 변경 사항의 차이를 줄 것입니다 mybranch
에서 새로운 변경 사항은 없음).
모든 경우에 --
구분 기호는 명령줄 플래그의 끝을 나타냅니다. 인수가 커밋이나 파일을 참조하는 경우 Git이 혼동하지 않는 한 이것은 선택 사항이지만 포함하는 것이 나쁜 습관은 아닙니다. 몇 가지 예 는 Git 체크아웃 이중 대시의 의미에 대한 Dietrich Epp의 답변을 참조하십시오.
구성된 인수가 있는 경우 git difftool
dahlbyk당신은 이것을 할 수 있습니다: git diff branch1:path/to/file branch2:path/to/file
difftool을 구성한 경우 다음을 수행할 수도 있습니다. git difftool branch1:path/to/file branch2:path/to/file
관련 질문: 선호하는 diff 도구/뷰어로 'git diff' 출력을 보려면 어떻게 해야 합니까?
Tim Henigan더 현대적인 구문:
git diff ..master path/to/file
이중 점 접두사는 "현재 작업 디렉토리에서 다음으로"를 의미합니다. 다음과 같이 말할 수도 있습니다.
-
master..
, 즉 위의 반대입니다. master
와 동일합니다. -
mybranch..master
, 현재 작업 트리 이외의 상태를 명시적으로 참조합니다. -
v2.0.1..master
, 즉, 태그를 참조합니다. -
[refspec]..[refspec]
, 기본적으로 Git에 대한 코드 상태로 식별할 수 있는 모든 것입니다.
Joe Atzberger두 가지 다른 분기의 파일을 비교하는 방법에는 여러 가지가 있습니다.
옵션 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
이 예에서는 실제 분기의 파일을 마스터 분기의 파일과 비교합니다.
Javier C.현재 브랜치에 대해 diff를 만들고 싶다면 커밋하고 다음을 사용할 수 있습니다.
git diff $BRANCH -- path/to/file
이렇게 하면 현재 분기와 참조된 분기( $BRANCH
)가 다릅니다.
Paulo Fidalgo나는 단순히 git diff branch1 branch2 path/to/file
이것은 파일 간의 차이점을 확인합니다. branch1
변경 사항은 빨간색으로 표시됩니다. branch2
변경 사항은 녹색으로 표시됩니다.
branch1
은 과거이고 branch2
는 미래라고 가정합니다. diff에서 분기의 순서를 반대로 하면 이것을 반대로 할 수 있습니다. git diff branch2 branch1
iGbanam나는 dahlbyk의 답변에 동의합니다. 코드 검토를 위해 diff를 diff 파일에 작성하려면 다음 명령을 사용하십시오.
git diff branch master -- filepath/filename.extension > filename.diff --cached
Azad파일을 비교하는 두 가지 시나리오가 있습니다.
시나리오 1: 원격 분기에서 파일 비교(두 분기가 모두 원격 저장소에 있어야 함)
시나리오 2: 로컬 파일(로컬 작업 영역 사본에 있음)을 원격 저장소에 있는 파일과 비교합니다.
논리는 간단합니다. diff에 두 개의 분기 이름을 제공하면 항상 원격 분기를 비교하고, 하나의 분기 이름만 제공하면 항상 로컬 작업 복사본을 원격 저장소(제공한 것)와 비교합니다. 범위를 사용하여 원격 저장소를 제공할 수 있습니다.
예를 들어 지점을 확인하십시오.
git checkout branch1
git diff branch2 [filename]
당신은 파일 이름을 제공하는 경우이 경우, 그것은 "브랜치"라는 이름의 원격 지사와 파일 이름의 로컬 복사본을 비교합니다.
git diff branch1 branch2 [filename]
이 경우 " branch1 " 대 " branch2 "라는 원격 분기의 파일 이름 을 비교합니다.
git diff ..branch2 [filename]
이 경우에도 " branch1 " 대 " branch2 "라는 원격 분기의 파일 이름을 비교합니다. 따라서 위와 동일합니다. 그러나 다른 브랜치에서 방금 생성한 브랜치를 "master"라고 하고 현재 브랜치가 원격 저장소에 존재하지 않는 경우 원격 " master " 대 원격 " branch2 "를 비교합니다.
Dharmender Rawat제 경우에는 아래 명령을 사용합니다.
git diff <branch name> -- <path + file name>
이 명령은 두 개의 다른 분기에 있는 동일한 파일을 비교하는 데 도움이 될 수 있습니다.
SKT가장 좋은 방법은 다음과 같은 방법으로 git diff
git diff <source_branch> <target_branch> -- file_path
해당 분기에 있는 파일 간의 차이를 확인합니다. Git 명령 과 작동 방식에 대한 자세한 내용은 이 기사를 참조하십시오.
Nesha Zoric커밋 해시를 다음과 같이 사용합니다.
git diff <hash1> <hash2> <filename>
여기서 hash1 은 모든 분기의 커밋이 될 수 있으며 hash2 도 마찬가지 입니다.
prometeuGit Bash 에서 두 파일을 비교하려면 다음 명령을 사용해야 합니다.
git diff <Branch name>..master -- Filename.extension
이 명령은 Bash 자체에 있는 두 파일의 차이점을 보여줍니다.
Rishav_SO이러한 다양한 비교 방법에 대한 또 다른 흥미로운 점이 있습니다. 현재 분기의 파일을 다른 분기의 동일한 파일과 비교하고 싶습니다. 내가 사용하는 경우
git difftool otherbranch.. filespec
실제로 내 임시 폴더에 있는 두 개의 파일을 비교하게 됩니다. 그러나 내가 사용하는 경우
git difftool otherbranch filespec
내 임시 폴더(otherbranch 의 버전)에 있는 파일을 내 Git 폴더에 있는 실제 파일과 비교하는 것으로 끝납니다. a) 어느 것이 어느 것인지 훨씬 쉽게 알 수 있고 b) diff 도구를 사용할 수 있음을 의미합니다(Beyond 내 경우에는 4를 비교) 내 다른 분기에서 현재 분기로 변경 사항을 복사합니다.
Dave출처 : http:www.stackoverflow.com/questions/4099742/how-to-compare-files-from-two-different-branches