답변:
이 --diff-filter
옵션은 diff
및 로그 와 함께 작동합니다 .
--diff-filter=M
diff 출력을 내용 수정만으로 제한하는 많은 것을 사용 합니다.
이름을 바꾸고 사본을 감지하고 DIFF 출력에 이것들을 사용하려면 사용할 수 있습니다 -M
및 -C
과 함께, 각각 R
및 C
옵션 --diff-filter
.
--diff-filter=!D
Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.
--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
UPDATE : 허용 대답 찰스 베일리에 의해 올바른 하나입니다; 원하는 기능은 이미 git에 내장되어 있습니다.
이 답변은 git에 내장되지 않은 것에 대한 아이디어를 제공 할 수 있으므로 여기에 남겨 두겠습니다.
git diff
새 파일과 삭제 된 파일을와 비교하여 표시합니다 /dev/null
. /dev/null
다음 줄까지 다음 줄 을 찾아 필터링하는 무언가를 작성하는 것이 너무 어렵지 않아야합니다 (Perl을 직접 사용합니다) . 그런 다음 git diff ... | the-filter
.
이름이 바뀐 파일은 다른 문제입니다. 나는 (아직) 그것에 대한 좋은 대답이 없습니다.
... | less
명시 적으로합니다.) 당신은 볼 수 less
의 -E
또는 -F
옵션 (내 시스템에 내가 출력을 볼 수 있도록하지 않습니다하지만).
git log
이것 과 함께 사용하면 파일을 추가 및 / 또는 제거하는 커밋을 완전히 무시하게됩니다.