Git 저장소에 삭제 된 파일을 모두 나열하려면 어떻게해야합니까? 삭제 될

Git은 파일이 삭제 될 때의 정보를 저장하고 개별 커밋을 확인하여 어떤 파일이 제거되었는지 확인할 수 있지만 리포지토리 수명 동안 삭제 된 모든 파일 목록을 생성하는 명령이 있습니까?



답변

git log --diff-filter=D --summary

Git 저장소에서 삭제 된 파일 찾기 및 복원을 참조하십시오.

어떤 커밋이 제거되었는지에 대한 모든 정보를 원하지 않으면 grep delete거기에 추가하십시오 .

git log --diff-filter=D --summary | grep delete


답변

이것은 당신이 원하는 것을합니다.

git log --all --pretty=format: --name-only --diff-filter=D | sort -u

…이 방금 다른 대답 에서 직접 또는 거의받지 못했습니다 .


답변

현재 삭제 된 파일 만보고 싶은 경우 다음을 사용할 수 있습니다.

git ls-files --deleted

그런 다음 xargs git rm에 연결되는 파이프 ( “git rm”을 사용하지 않고 삭제 한 경우)를 제거하려는 경우

git ls-files --deleted | xargs git rm


답변

스택 오버플로 답변을 인용 했습니다 .

변경된 각 파일에 대해 변경 유형 (A : 추가, M : 수정, D : 삭제) 을 얻는 매우 깔끔한 방법 입니다.

git diff --name-status


답변

그리고 어떻게 든 결과를 제한하려면 여기 좋은 결과가 있습니다.

$ git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}'
delete mode 100644 blah/some_dir/file1 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file2 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file3 9c89b91d8df7c95c6043184154c476623414fcb7

some_dir커밋 번호와 함께 모든 파일이 삭제됩니다 (sed 명령 참조). 모든 sed 정규식이 수행합니다 (삭제 된 파일 형식 등을 찾는 데 사용합니다)


답변

Windows에는 grep명령 이 없으므로 PowerShell에서 나를 위해 일했습니다.

git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt


답변

some_branch에 삭제 된 모든 파일 표시

git diff origin/master...origin/some_branch --name-status | grep ^D

또는

git diff origin/master...origin/some_branch --name-status --diff-filter=D