현재 분기와 마스터 간의 Git 차이가 있지만 병합되지 않은 마스터 커밋은 포함되지 않습니다.
아직 마스터에 병합되지 않은 분기의 모든 변경 사항에 대한 diff를 원합니다.
노력했습니다.
git diff master
git diff branch..master
git diff branch...master
그러나 이러한 경우 각각의 diff에는 아직 내 브랜치에 병합되지 않은 마스터의 콘텐츠가 포함되어 있습니다.
아직 브랜치에 병합되지 않은 마스터의 변경 사항을 제외한 브랜치와 마스터 간의 차이점을 수행할 수 있는 방법이 있습니까?
git diff `git merge-base master branch`..branch
병합 기준은 다음과 같은 점입니다.branch
에서 master
.
Gitdiff는 다음과 같은 특수 구문을 지원합니다.
git diff master...branch
변을 바꾸면 다른 가지를 얻을 수 있기 때문에 변을 바꾸면 안 됩니다.은 은신무엇바알싶다습니고지는뀌었에서 무엇이 바뀌었는지 알고 .branch
에서 갈라진 이후로master
그 반대는 아닙니다.
교체할 수 있습니다.branch
에서 와같구로으문과 함께HEAD
또는 완전히 삭제할 수도 있습니다. 다음 두 가지 모두 마스터에서 분기된 이후 현재 분기의 내용을 표시합니다.
git diff master...HEAD
git diff master...
느슨하게 관련됨:
:..
그리고....
구문은 다른 Git 도구와 동일한 의미를 가지고 있지 않습니다.▁▁specified에 명시된 의미와 .man gitrevisions
.
견적:
git diff [--options] <commit> <commit> [--] [<path>…]
이것은 임의의 두 가지 사이의 변화를 보기 위한 것입니다.
<commit>
.
git diff [--options] <commit>..<commit> [--] [<path>…]
이것은 이전 양식과 동의어입니다.한다면
<commit>
한쪽은 생략되며, 사용하는 것과 동일한 효과가 있을 것입니다.HEAD
대신.
git diff [--options] <commit>...<commit> [--] [<path>…]
이 양식은 다음을 포함하는 분기의 변경 내용을 보기 위한 것입니다.
<commit>
두 가지 공통 조상에서 시작하여<commit>
. "git diff A...B
에해 " 당합니다는다니▁"▁toent"에 해당합니다.git diff $(git-merge-base A B) B
다음 중 하나를 생략할 수 있습니다.<commit>
사용하는 것과 동일한 효과가 있습니다.HEAD
대신.만약 여러분이 이국적인 것을 하고 있다면, 모든 것이
<commit>
위의 설명에서 "." 표기법을 사용하는 마지막 두 형식을 제외하고는 임의일 수 있습니다.<tree>
.맞법에자면
<commit>
의 "수정기호 지정" 섹션을 참조하십시오. 그러나 "diff"는 범위가 아닌 두 끝점과 범위 표기를 비교하는 것입니다.<commit>..<commit>
그리고 "<commit>...<commit>
")는 의 "범위 지정" 섹션에 정의된 범위를 의미하지 않습니다.
제가 성공한 것은 다음과 같습니다.
git diff origin/master...
현재 선택한 로컬 분기와 원격 마스터 분기 간의 변경 사항만 표시되고 병합 커밋에서 발생한 로컬 분기의 모든 변경 사항은 무시됩니다.
John Sakmeister와 Vasili Novikov에 의해서도 지적되었듯이, 당신의 브랜치에 대한 마스터의 관점으로부터 완전한 차이를 얻는 가장 짧은 명령은 다음과 같습니다.
git diff master...
이것은 마스터의 로컬 복사본을 사용합니다.
특정 파일을 비교하려면 다음을 사용합니다.
git diff master... filepath
출력 예:
설명서에 따름
gitdiff 작업 트리와 인덱스 또는 트리 간의 변경, 인덱스와 트리 간의 변경, 두 트리 간의 변경, 병합으로 인한 변경, 두 Blob 개체 간의 변경 또는 디스크의 두 파일 간의 변경을 표시합니다.
인git diff
저장소에서 분기를 비교하거나 요청을 끌어오는 방식에서 두 개의 점과 세 개의 점 사이에는 상당한 차이가 있습니다.쉽게 설명할 수 있는 쉬운 예를 하나 들어보겠습니다.
예:마스터에서 새 분기를 확인하고 코드를 입력한다고 가정해 보겠습니다.
G---H---I feature (Branch)
/
A---B---C---D master (Branch)
두 개의 점 - 현재 시간에 발생한 모든 변경 사항 사이의 차이를 양쪽에서 보여주고 싶다면,
git diff origin/master..feature
아니면 그냥git diff origin/master
,출력: (H, I
그에 반대하여A, B, C, D
)세 개의 점 - 마지막 공통 조상 사이의 차이를 보여주고 싶다면 (
A
), 우리가 새로운 지점을 시작한 체크 포인트로, 우리는 사용합니다.git diff origin/master...feature
,출력: (H, I
그에 반대하여A
).저는 대부분의 상황에서 3개의 점을 사용하고 싶습니다.
분기/커밋 간에 git diff를 지정합니다.하나의 패치 파일에 ID를 지정한 다음(삭제되거나 생성된 파일이 없는 경우에만 해당) 새 분기에 적용합니다.
git checkout -b new-branch-name
git diff abcde123..branch-name > branch-name.patch
git apply branch-name.patch
rm branch-name.patch
git add .
git commit -m '#123 commit msg’
git push
여기서 abcde123은 원하지 않는 변경사항이 아직 없는 마스터의 커밋 ID입니다.
기본적으로 마스터가 필요하지 않습니다.현재 커밋을 현재 분기의 커밋과 비교할 수 있습니다(예: 변경을 시작하기 전 마지막 커밋).
git diff a4488d20406a1f26888d80eb7d57aa3b0054e307
or
git diff 553e4c7dcdcf366917d36ad8f28a273c88d92a1b..a4488d20406a1f26888d80eb7d57aa3b0054e307
언급URL : https://stackoverflow.com/questions/20808892/git-diff-between-current-branch-and-master-but-not-including-unmerged-master-com
'programing' 카테고리의 다른 글
nodejs 스크립트 내의 mongo 데이터베이스에 있는 모든 컬렉션 나열 (0) | 2023.05.24 |
---|---|
Bash의 어레이에서 고유한 값을 가져오려면 어떻게 해야 합니까? (0) | 2023.05.24 |
git pull --rebase는 언제 사용해야 합니까? (0) | 2023.05.24 |
Windows에서 Windows Subsystem for Linux(WSL)로 파일 복사 (0) | 2023.05.24 |
Oracle의 CREATE 또는 REPLACE VIEW와 동일한 SQL Server (0) | 2023.05.24 |