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

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

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



답변

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

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

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


답변

  • 공식 문서 :
--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.

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