변경 유형별로 git diff 필터링
git diff
변경된 파일 로 제한하는 방법이 있습니까?
두 커밋의 차이점을보고 싶지만 둘 중 하나에 존재하지 않는 경로 (추가 / 삭제)는 제외합니다. 다음 Perl 한 줄짜리는 내가 원하는 대부분을 보여줍니다.
git diff master.. | perl -lnwe 'print unless /^(new|deleted) file/../^diff/ and not /^diff/'
그러나 diff --git a/path b/path
새 파일이나 삭제 된 파일에 대한 줄 이 남습니다 . 또한 구문 분석 할 필요가 없다면 훨씬 더 좋을 것입니다 (예를 들어 어떤 덩어리에 / ^ diff /와 일치하는 것이 있으면 실패합니다).
내가 시도한 또 다른 대안은 다음과 같습니다.
git diff --name-status (args) | perl -lnwe 'print if s/^M\s+//' | xargs git diff (args) --
출력은 더 좋지만 여전히 끔찍한 느낌입니다.
당신이 찾고있는 --diff-filter=M
단지 * 파일을 표시하는 M * 두 가지 사이에 odified.
에서 man git-diff
--diff-filter=[ACDMRTUXB*]
다음과 같은 파일 만 선택하십시오.
A
추가됨C
복사 됨D
삭제M
수정 됨R
이름이 변경됨T
유형 (모드) 변경U
병합 해제X
알 수 없는B
페어링이 끊어졌습니다.*
모두 또는 없음필터 문자의 모든 조합을 사용할 수 있습니다.
* (모두 또는 없음)을 조합에 추가하면 비교에서 다른 기준과 일치하는 파일이 있으면 모든 경로가 선택됩니다. 다른 기준과 일치하는 파일이 없으면 아무것도 선택되지 않습니다.
Git 2.10 (Q3 2016)이 상기시켜 주듯이 "추가 / 삭제 된 파일을 제외한 모든 것을 표시"하는 더 쉬운 방법이 있습니다. (실제로 Git 1.8.5, 2013 년 7 월 이후)
git diff --diff-filter=ad master..
참조 16726cf 커밋 에 의해 (2016년 7월 14일를) Junio C 하마노 ( gitster
) .
(Merged by Junio C gitster
Hamano -- in commit 2f8c654 , 08 Aug 2016)
diff
: 문서diff-filter
제외v1.8.5 일에 7f2ea5f (
diff
: 소문자로 제외 할 변경 클래스 지정, 2013-07-17) 는--diff-filter
소문자를 제외로 사용 하는 " "메커니즘을 가르쳤 지만 문서화하는 것을 잊었습니다.
따라서 지금 (마지막으로) 문서diff-options
에는 다음이 포함됩니다.
이러한 대문자는 제외 할 수 있습니다.
예를 들어--diff-filter=ad
추가 및 삭제 된 경로를 제외합니다.
--diff-filter 플래그를 사용하여이를 정확하게 수행 할 수 있습니다. git diff --diff-filter=CMRTUXB master..
추가 / 삭제 된 파일을 제외한 모든 항목이 표시되어야합니다.
사용할 수있는 모든 수정 된 파일과 새 파일을 보려면
git diff --name-only --diff-filter=ACMR PREV_VERSION master
PREV_VERSION
첫 번째 커밋의 해시입니다.
zip으로 내보내려면이 코드를 사용할 수 있습니다.
git archive --output=export.zip HEAD $(git diff --name-only --diff-filter=ACMR PREV_VERSION HEAD)
참고 : .gitignore
없습니다export.zip
저는 Notepad ++ (Windows)와 이러한 정규식을 사용하여 diff 파일에서 확장 유형과 특정 경로를 필터링했습니다.
^Index.*\.(dll|pdb|exe|txt|zip|log|ism|resx|tlog|htm|lib)$[\s\S.]*?^Index
^Index: Shared/.+$[\s\S.]*?^Index
^Index: Next/source/Utility/.+$[\s\S.]*?^Index
문제는 그것이 끝날 때입니다. 'ctrl + home'을 누르고 아무것도 찾지 못할 때까지 다시 가야합니다.
(찾은 내용을 '색인'으로 대체)
참고 URL : https://stackoverflow.com/questions/6879501/filter-git-diff-by-type-of-change
'code' 카테고리의 다른 글
메타 클래스의 (구체적인) 사용 사례는 무엇입니까? (0) | 2020.08.16 |
---|---|
EL에서 상수를 참조하는 방법은 무엇입니까? (0) | 2020.08.16 |
javax.annotation. *에서 @Nullable을 찾을 수 없습니다. (0) | 2020.08.16 |
3 개의 긴 정수 평균 (0) | 2020.08.16 |
가독성은 URL에서 텍스트를 추출하는 데 어떤 알고리즘을 사용합니까? (0) | 2020.08.16 |