서로 다른 두 분기의 파일을 비교하는 방법
한 지점에서 잘 작동하고 다른 지점에서 끊어진 스크립트가 있습니다.저는 두 버전을 나란히 보고 무엇이 다른지 보고 싶습니다.이것을 할 수 있는 방법이 있습니까?
확실히 하기 위해 비교 도구를 찾고 있는 것이 아닙니다(Beyond Compare 사용).마스터 버전을 현재 분기 버전과 비교하여 무엇이 변경되었는지 확인할 수 있는 Gitdiff 명령을 찾고 있습니다.합병 같은 건 진행 중이 아닙니다.나는 단지 다음과 같은 것을 말하고 싶습니다.
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
).
당은또관있것다입니을심이신한다▁▁in▁be에 관심이 있을 수도 있습니다.mybranch...master
(문서 참조):
이 양식은 다음을 포함하는 분기의 변경 내용을 보기 위한 것입니다.
<commit>
두 가지 공통 조상에서 시작하여<commit>
.git diff A...B
는 와동합다니등다에 합니다.git diff $(git-merge-base A B) B
.
말해서,은 다시말해서, 이은변줄것다니입화를것의 를 줄 것입니다.master
에서 갈라진 이후로mybranch
그 .)mybranch
).
모든경에우,에,--
파일 이름 앞의 구분 기호는 명령줄 플래그의 끝을 나타냅니다.인수가 커밋 또는 파일을 참조하는 경우 Git이 혼동하지 않는 한 이것은 선택 사항이지만, 포함하는 것이 나쁜 습관은 아닙니다.몇 가지 예를 들어, Git 체크아웃 이중 대시의 의미에 대한 Dietrich Epp의 답변을 참조하십시오.
를 동한인수전수있다니습할달에를일다▁can▁be에 전달할 수.git difftool
구성된 경우.
다음을 수행할 수 있습니다.git diff branch1:path/to/file branch2:path/to/file
구성했다면,은 다음과 할 수 있습니다.git difftool branch1:path/to/file branch2:path/to/file
관련 질문:원하는 diff 도구/뷰어를 사용하여 'gitdiff' 출력을 보려면 어떻게 해야 합니까?
보다 현대적인 구문:
git diff ..master path/to/file
이중 점 접두사는 "현재 작업 디렉토리에서 다음으로"를 의미합니다.다음과 같이 말할 수도 있습니다.
master..
즉, 위의 반대입니다.은 이는다같습다니과음과 .master
.mybranch..master
현재 작업 트리가 아닌 다른 상태를 명시적으로 참조합니다.v2.0.1..master
tag, 태그참을 하는 것입니다.[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
이 예에서는 실제 분기의 파일을 마스터 분기의 파일과 비교합니다.
Visual Studio Code의 경우 다음 확장을 강력히 제안합니다.
Git 기록 Diffdocs
파일 간 또는 분기 간에 비교할 수 있습니다!
콘솔에서 다음 명령을 사용할 수 있습니다.
git diff <Your_Branch> <Branch_To_Compare_With> -- myfile.cs
현재 분기에 대해 차이를 설정하려면 이를 커밋하고 다음을 사용할 수 있습니다.
git diff $BRANCH -- path/to/file
분기로 .$BRANCH
).
는저그해요냥을 합니다.git diff branch1 branch2 path/to/file
파일 간의 차이를 확인합니다. 변경 branch1
빨간색일 것입니다. 변경 branch2
녹색일 것입니다.
branch1
이고 거고과입니다.branch2
미래입니다.디프의 분기 순서를 반대로 하여 이 값을 되돌릴 수 있습니다.git diff branch2 branch1
파일을 비교하는 두 가지 시나리오가 있습니다.
시나리오 1: 원격 지점의 파일 비교(두 지점이 원격 저장소에 존재해야 함)
시나리오 2: 로컬 파일(로컬 작업 영역 복사본)을 원격 저장소의 파일과 비교합니다.
논리는 간단합니다.diff에 두 개의 분기 이름을 제공하면 항상 원격 분기가 비교되고, 하나의 분기 이름만 제공하면 로컬 작업 복사본이 항상 원격 저장소(제공한 저장소)와 비교됩니다.범위를 사용하여 원격 리포지토리를 제공할 수 있습니다.
예: 분기를 확인합니다.
git checkout branch1
git diff branch2 [filename]
이 경우 파일 이름을 제공하면 파일 이름의 로컬 복사본이 "branch2"라는 원격 분기와 비교됩니다.
git diff branch1 branch2 [filename]
이 경우 "branch1"과 "branch2"라는 원격 분기의 파일 이름을 비교합니다.
git diff ..branch2 [filename]
이 경우에도 "branch1"과 "branch2"라는 원격 분기의 파일 이름을 비교합니다.그래서 위와 같습니다.그러나 다른 분기에서 방금 분기를 만든 경우(예: "master") 현재 분기가 원격 리포지토리에 없는 경우 원격 "master"와 원격 "branch2"를 비교합니다.
저는 달빅의 답변에 동의합니다.코드 검토를 위해 diff 파일에 diff를 기록하려면 다음 명령을 사용합니다.
git diff branch master -- filepath/filename.extension > filename.diff --cached
이 경우 다음 명령을 사용합니다.
git diff <branch name> -- <file path + file name>
이 명령을 사용하면 서로 다른 두 분기에 있는 동일한 파일을 비교할 수 있습니다.
커밋 해시를 다음과 같이 사용합니다.
git diff <hash1> <hash2> <filename>
여기서 hash1은 모든 분기의 모든 커밋일 수 있으며 hash2에 대해서도 동일합니다.
이러한 다양한 비교 방법에 대한 또 다른 흥미로운 점이 있습니다.현재 분기의 파일을 다른 분기의 파일과 비교하려고 합니다.사용할 경우
git difftool otherbranch.. filespec
저는 결국 제 임시 폴더에 있는 두 개의 파일을 비교하게 됩니다.하지만, 사용할 경우
git difftool otherbranch filespec
결국 임시 폴더(다른 분기의 버전)에 있는 파일과 Git 폴더의 실제 파일을 비교하게 되는데, a) 이는 어느 것이 어느 것인지 훨씬 쉽게 구분할 수 있게 해주고, b) diff 도구(내 경우에는 비교 4 이상)를 사용하여 다른 분기의 변경 사항을 현재 분기에 복사할 수 있음을 의미합니다.
Git Bash에서 두 파일을 비교하려면 다음 명령을 사용해야 합니다.
git diff <Branch name>..master -- Filename.extension
이 명령은 Bash 자체에서 두 파일 간의 차이를 표시합니다.
가장 좋은 방법은 다음을 사용하는 것입니다.git diff
다음과 같은 방법으로:
git diff <source_branch> <target_branch> -- file_path
이러한 분기에 있는 파일 간의 차이를 확인합니다.Git 명령과 Git 명령의 작동 방식에 대한 자세한 내용은 이 문서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/4099742/how-to-compare-files-from-two-different-branches
'programing' 카테고리의 다른 글
'Id' 요소가 클래스의 어떤 필드나 속성과도 일치하지 않습니다. (0) | 2023.05.04 |
---|---|
NPM: npm을 실행할 때 npm-cli.js를 찾을 수 없습니다. (0) | 2023.05.04 |
에서 응용 프로그램의 경로를 가져오려면 어떻게 해야 합니까?NET 콘솔 애플리케이션? (0) | 2023.05.04 |
Angular 2 azure 배포 새로 고침 오류: 찾고 있는 리소스가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수 없습니다. (0) | 2023.05.04 |
ABC를 사용하는 것과 ABC를 사용하는 것 사이에 차이점이 있습니까? (0) | 2023.05.04 |