변경 유형별 필터 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
새로우거나 삭제된 파일의 줄을 표시합니다.또한 구문 분석할 필요가 없다면 훨씬 더 좋을 것입니다(예를 들어 어떤 hunk라도 /^diff/와 일치하는 내용을 포함하면 실패합니다).
제가 시도한 또 다른 대안은 다음과 같습니다.
git diff --name-status (args) | perl -lnwe 'print if s/^M\s+//' | xargs git diff (args) --
그것의 출력은 더 좋지만, 여전히 딱딱하게 느껴집니다.
당신은 찾고 있습니다.--diff-filter=M
두 분기 사이에 수정된 파일만 표시합니다.
부터man git-diff
--diff-filter=[ACDMRTUXB*]
다음 파일만 선택합니다.
A
추가된C
복사됨D
삭제됨M
수정된R
이름 바꿈T
유형(모드)을 변경합니다.U
병합되지 않음X
알 수 없는B
그들의 짝이 깨졌습니다.*
모두 또는 모두필터 문자 조합을 모두 사용할 수 있습니다.
언제
*
(All-or-none)이 조합에 추가되고, 비교에서 다른 기준과 일치하는 파일이 있으면 모든 경로가 선택되고, 다른 기준과 일치하는 파일이 없으면 아무것도 선택되지 않습니다.또한 이러한 대문자는 제외하기 위해 내림차순으로 지정할 수 있습니다.예.
--diff-filter=ad
추가된 경로와 삭제된 경로는 제외됩니다.
Git 2.10(2016년 3분기)이 상기시켜 주듯, "추가/삭제된 파일을 제외한 모든 것을 보여 주는" 더 쉬운 방법이 있습니다(실제로 Git 1.8.5, 2013년 7월 이후).
git diff --diff-filter=ad master..
주니오 C 하마노()gitster
의 커밋 16726cf (2016년 7월 14일) 참조.
(2016년 8월 8일 주니오 C 하마노 ---- 커밋 2f8c654에 합병)
diff
: 서류를diff-filter
배격
v1.8.5일에서 7f2ea5f(:
diff
소문자가 어떤 변경 클래스를 제외할지 지정할 수 있도록 허용, 2013-07-17)는 "" 메커니즘에서--diff-filter
소문자를 제외로 받아들이도록 가르쳤지만 문서화하는 것을 잊었습니다.
따라서 현재(최종) 문서에는 다음과 같은 내용이 포함됩니다.
이 대문자들은 제외하기 위해 내림차순으로 내릴 수 있습니다.
예.--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
메모장++(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'을 하고 아무것도 발견되지 않을 때까지 다시 가셔야 합니다.
(검색한 내용을 'Index'로 바꿉니다)
언급URL : https://stackoverflow.com/questions/6879501/filter-git-diff-by-type-of-change
'it-source' 카테고리의 다른 글
Typecript에 "Class" 타입이 있습니까?"아무것도"가 포함되어 있나요? (0) | 2023.09.18 |
---|---|
다른 컨테이너에서 도커 컨테이너 액세스 (0) | 2023.09.18 |
대량 삽입 기능이 있는 AWS RDS의 네트워크 성능 문제 (0) | 2023.09.13 |
열에 고유한 제약 조건이 있는지 검색 (0) | 2023.09.13 |
중복 행 선택(거의) (0) | 2023.09.13 |