git-diff 및 git log가 새 파일과 삭제 된 파일을 무시하도록 만드는 방법은 무엇입니까?


154

때로는 새로운 파일, 삭제되거나 이름이 바뀐 파일과 함께 변경된 파일이 몇 개 있습니다. 할 git diff때나 git-log생략하고 싶을 때 수정 사항을 더 잘 알 수 있습니다.

실제로 새 파일과 삭제 된 파일의 이름을 내용없이 나열하는 것이 가장 좋습니다. "old"로 이름이 "new"로 바뀌면 선택적으로 "old"와 "new"의 차이점을 원합니다.

답변:


217

--diff-filter옵션은 diff및 로그 와 함께 작동합니다 .

--diff-filter=Mdiff 출력을 내용 수정만으로 제한하는 많은 것을 사용 합니다.

이름을 바꾸고 사본을 감지하고 DIFF 출력에 이것들을 사용하려면 사용할 수 있습니다 -M-C과 함께, 각각 RC옵션 --diff-filter.


3
git log이것 과 함께 사용하면 파일을 추가 및 / 또는 제거하는 커밋을 완전히 무시하게됩니다.
qqx

7
실제로 한 가지 유형의 데이터 만 제외하는 방법이 있습니까? 뭔가 같은--diff-filter=!D
카밀 Dziedzic

24
@ 카밀 네, 있습니다. 문서에서 인용 :Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.
LambdaCruiser

62
  • 공식 문서 :
--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]

추가 된 파일 (A), 복사 된 파일 (C), 삭제 된 파일 (D), 수정 된 파일 (M), 이름이 변경된 파일 (R) 만 선택한 파일 유형 (예 : 일반 파일, 심볼릭 링크, 하위 모듈,…)이 변경된 파일 (T), 병합되지 않음 (U), 알 수 없음 (X) 또는 페어링 끊어짐 (B)이 있습니다. 필터 문자의 조합 (없음 포함)을 사용할 수 있습니다.

* (모두 또는 없음)이 조합에 추가되면 비교에서 다른 기준과 일치하는 파일이 있으면 모든 경로가 선택됩니다. 다른 기준과 일치하는 파일이 없으면 아무것도 선택되지 않습니다.

또한이 대문자는 소문자로 제외 할 수 있습니다. 예를 들어 --diff-filter = ad는 추가 및 삭제 된 경로를 제외합니다.

예 : 추가, 변경 및 수정 된 파일 만 표시 삭제 된 파일을 제외합니다.

git diff --diff-filter=ACM

2
경로를 제외하기 위해 소문자 옵션을 사용하고 경로를 포함하기 위해 대문자 옵션을 사용하는 것에 대한 참고 사항.
stuyam

-3

UPDATE : 허용 대답 찰스 베일리에 의해 올바른 하나입니다; 원하는 기능은 이미 git에 내장되어 있습니다.

이 답변은 git에 내장되지 않은 것에 대한 아이디어를 제공 할 수 있으므로 여기에 남겨 두겠습니다.


git diff새 파일과 삭제 된 파일을와 비교하여 표시합니다 /dev/null. /dev/null다음 줄까지 다음 줄 을 찾아 필터링하는 무언가를 작성하는 것이 너무 어렵지 않아야합니다 (Perl을 직접 사용합니다) . 그런 다음 git diff ... | the-filter.

이름이 바뀐 파일은 다른 문제입니다. 나는 (아직) 그것에 대한 좋은 대답이 없습니다.


이것은 괜찮지 만 필요한 경우에만 호출기를 사용할 가능성을 잃어 버릴 것입니다.
maaartinus

@maaartinus : 그렇게 생각합니다; 나는 그것을 생각하지 않았다. (개인적으로, 나는 "고양이"를 이용할 수 있도록 자식 호출기 설정 ... | less명시 적으로합니다.) 당신은 볼 수 less-E또는 -F옵션 (내 시스템에 내가 출력을 볼 수 있도록하지 않습니다하지만).
Keith Thompson

좋습니다. 괜찮지 만 다른 대답을보십시오.
maaartinus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.