meld
+ git
에 2 가지 커밋 사이에 발생한 변경 사항을 표시하지만 3 차 커밋에 변경된 사항은 제외 할 수 있습니까? 유스 케이스는 현재 커밋이 3-way 병합 전에 수행 된 커밋과 얼마나 다른지 확인하는 것입니다.3 차 커밋에 포함 된 것을 제외하고 2 git 커밋의 차이점
0
A
답변
0
나는 그것을 해킹 할 방법이 있습니다.
경고 : 아래의 단일 라이너를 사용하기 전에 커밋되지 않은 변경 사항을 모두 커밋/백업하십시오. 이 단일 라이너는 변경 사항을 숨기고 복원하려고 시도합니다. 하지만 여전히의 repo에서 약간의 혼란 (새 파일)을 도입하거나 일부 버그
아래 코드는 MERGE_COMMIT
다른 지점에 의해 도입 된 다른 파일에 대한 변경 사항을 제외하고 FIRST_COMMIT
와 SECOND_COMMIT
사이 DIFF 표시를 포함 할 수있다. env 변수 FIRST_COMMIT
, SECOND_COMMIT
및 MERGE_COMMIT
을 적절한 값으로 설정해야합니다.
FIRST_COMMIT=866dfa2a7
MERGE_COMMIT=94b195989
SECOND_COMMIT=0fc856fd9
git stash ; \
git checkout $FIRST_COMMIT ; \
git ls $MERGE_COMMIT..$SECOND_COMMIT | sort | \
uniq | \
xargs -L 1 git checkout $SECOND_COMMIT -- ; \
git difftool -d $FIRST_COMMIT ; \
git stash && git stash drop ; \
git stash apply
이 단일 라이너 기능 :
- 는
FIRST_COMMIT
- 에서 코드 상태를
stash
- 검사를 이눔 현지 않은 변경을두고 모든 파일이
MERGE_COMMIT
및SECOND_COMMIT
모든 버전에서 변경합니다 그 사이 - 이전 단계의 모든 파일은의 시간에 해당 상태로 재설정됩니다.
- 은 git 용으로 구성된 diff 도구를 사용하여 diff를 보여줍니다. diff는
FIRST_COMMIT
과SECOND_COMMIT
사이에 있으며 다른 브랜치에 의해 도입 된 다른 파일은MERGE_COMMIT
으로 변경됩니다. 이전 문장은 어떤 파일이SECOND_COMMIT
과MERGE_COMMIT
에 모두 수정 된 경우 모든 변경 사항이 diff에 있음을 의미합니다. 그것을 피하기가 어렵습니다. - diff 도구를 종료하면 git은 임시 변경 사항을 제거하고 작업중인 지점을 체크 아웃합니다.
- 그 후 git stash의 변경 사항이 적용됩니다.
당신의 선호하는 자식의 흐름에 따라
위에 하나의 라이너에서 자식 숨김 호출을 제거하기로 결정할 수있다