현재 브랜치와 마스터 사이에 Git diff가 있지만 병합되지 않은 마스터 커밋은 포함되지 않습니다.
아직 마스터로 병합되지 않은 지점의 모든 변경 내용을 비교하고 싶습니다.
나는 시도했다 :
git diff master
git diff branch..master
git diff branch...master
그러나 이러한 각 경우에 diff에는 아직 내 지점으로 병합되지 않은 마스터의 내용이 포함되어 있습니다.
내 지점에 아직 병합되지 않은 마스터의 변경 사항을 제외하는 지점과 마스터간에 차이점을 수행하는 방법이 있습니까?
git diff `git merge-base master branch`..branch
병합 기준 은에서 branch
분기 된 지점 입니다 master
.
Git diff는이를위한 특별한 문법을 지원합니다 :
git diff master...branch
당신은 다른 지점을 얻을 것이기 때문에 측면을 교환해서는 안됩니다. 반대 방향이 아닌 branch
에서로 변경되어 변경된 내용을 알고 싶습니다 master
.
느슨하게 관련됨 :
참고 ..
및 ...
기타 망할 놈의 도구와 같은 의미가없는 구문. 에 지정된 의미와 다릅니다 man gitrevisions
.
인용 man git-diff
:
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
"는 " "와 같습니다git diff $(git-merge-base A B) B
. 중 하나를 생략하면 대신<commit>
사용하는 것과 같은 효과가HEAD
있습니다.만약 당신이 이국적인 것을하고 있다면
<commit>
, ".."표기법을 사용하는 마지막 두 형태를 제외하고는 위의 설명에서 모든 것이 될 수 있습니다<tree>
.철자법에 대한 자세한 전체 목록
<commit>
은의 "사양 수정"섹션을 참조하십시오gitrevisions[7]
. 그러나 "diff"는 범위가 아닌 두 끝점을 비교하는 것이며 범위 표기법 ( "<commit>..<commit>
"및 "<commit>...<commit>
")은의 "SPECIFYING RANGES"섹션에 정의 된 범위를 의미하지 않습니다gitrevisions[7]
.
나를 위해 일한 것은 다음과 같습니다.
git diff origin/master...
이것은 현재 선택된 로컬 브랜치와 원격 마스터 브랜치 사이의 변경 사항 만 표시하며 병합 커밋에서 나온 로컬 브랜치의 모든 변경 사항은 무시합니다.
John Szakmeister와 VasiliNovikov가 언급했듯이 지점의 마스터 관점에서 전체 차이점을 얻는 가장 짧은 명령은 다음과 같습니다.
git diff master...
이것은 로컬 마스터 사본을 사용합니다.
특정 파일을 비교하려면 :
git diff master... filepath
출력 예 :
'Programing' 카테고리의 다른 글
C ++ 11에서 값별 전달이 합리적인 기본값입니까? (0) | 2020.06.24 |
---|---|
Python 스크립트와 동일한 디렉토리에서 파일을 안정적으로 여는 방법 (0) | 2020.06.24 |
PyTorch에서 "보기"방법은 어떻게 작동합니까? (0) | 2020.06.24 |
Git, Mercurial 및 Bazaar의 상대적 강점과 약점은 무엇입니까? (0) | 2020.06.24 |
현재 새 프로젝트의 JBoss 또는 Glassfish (또는 다른)를 Java EE 서버로 사용 하시겠습니까? (0) | 2020.06.24 |