질문자 :Codebeef
내가 사용하는 네 개의 파일을 삭제하는 힘내의 repo가 rm
(안 git rm
),이처럼 내 망할 놈의 상태 외모 :
# deleted: file1.txt # deleted: file2.txt # deleted: file3.txt # deleted: file4.txt
다음과 같이 수동으로 각 파일을 추가하지 않고도 Git에서 이러한 파일을 제거하려면 어떻게 해야 합니까?
git rm file1 file2 file3 file4
git add .
와 같은 방식으로 작동하는 것을 찾고 있습니다. 가능하다면 그렇습니다.
Git 1.x의 경우
$ git add -u
이것은 이전에 추적된 파일 삭제를 포함하여 추적된 파일을 자동으로 준비하도록 git에 지시합니다.
Git 2.0의 경우
전체 작업 트리를 준비하려면:
$ git add -u :/
현재 경로만 준비하려면:
$ git add -u .
carlgit ls-files --deleted -z | xargs -0 git rm
당신이 찾고있는 것일 수 있습니다 .. 그것은 나를 위해 작동합니다 ..
Varinder당신이 사용할 수있는
git add -u
삭제된 파일을 준비 영역에 추가한 다음 커밋합니다.
git commit -m "Deleted files manually"
Cody Caughlan단순히 실행하는 경우:
git add -u
git은 삭제한 파일이 실제로 다음 커밋의 일부여야 한다는 것을 알기 위해 인덱스를 업데이트합니다. 그런 다음 "git commit"을 실행하여 해당 변경 사항을 확인할 수 있습니다.
또는 다음을 실행하는 경우:
git commit -a
자동으로 이러한 변경 사항(및 기타 변경 사항)을 적용하고 커밋합니다.
업데이트 : 삭제된 파일만 추가하려면 다음을 시도하세요.
git ls-files --deleted -z | xargs -0 git rm git commit
Emil Sit당신은 아마 -A:
git add -A
이것은 git add -u와 유사하지만 새 파일도 추가합니다. 이것은 hg의 addremove
명령과 거의 동일합니다(이동 감지는 자동이지만).
Dustin삭제된 파일만 준비하려면:
for x in $(git status | grep deleted | awk '{print $2}'); do git rm $x; done
또는 (xargs 방식):
git status | awk '/deleted/ {print $2}' | xargs git rm
나중에 편리하게 사용할 수 있도록 원하는 명령 집합에 별칭을 지정할 수 있습니다.
Saeb Aminigit rm test.txt
실제 파일을 삭제하기 전이나 후에.
Peaker'--all' 또는 '--update' 옵션과 함께 git-add를 사용하면 원하는 것보다 더 많은 것을 얻을 수 있습니다. 새 파일 및/또는 수정된 파일도 색인에 추가됩니다. 다른 파일을 건드리지 않고 git에서 삭제된 파일을 제거하려는 경우에 대한 bash 별칭 설정이 있습니다.
alias grma='git ls-files --deleted -z | xargs -0 git rm'
파일 시스템에서 제거된 모든 파일은 삭제된 상태로 인덱스에 추가됩니다.
zobie그것이 정말로 중요하지는 않지만 선택한 답변에 동의하지 않습니다.
git add -u
... 작업 트리에서 해당 파일이 제거된 경우 색인에서 파일을 제거하지만 추적된 파일의 수정된 새 내용도 준비합니다.
git rm $(git ls-files --deleted)
... 반면에 추적된 삭제된 파일만 RM합니다.
그래서 제 생각에는 후자가 더 나은 선택입니다.
Stephan Tual이것이 유일한 변경 사항이라면 간단히 할 수 있습니다.
git commit -a
모든 변경 사항을 커밋합니다. 삭제된 파일이 포함됩니다.
SpoonMeisergit ls-files --deleted | xargs git rm
삭제된 파일만 추가하는 가장 좋은 옵션입니다.
다음은 몇 가지 다른 옵션입니다.
git add . => Add all (tracked and modified)/new files in the working tree. git add -u => Add all modified/removed files which are tracked. git add -A => Add all (tracked and modified)/(tracked and removed)/new files in the working tree. git commit -a -m "commit message" - Add and commit modified/removed files which are tracked.
Sijo Kurian자식 추가 -u
-u --update 작업 트리가 아닌 인덱스에서 이미 추적된 파일에 대해서만 일치합니다. 이는 새 파일을 준비하지 않지만 추적된 파일의 수정된 새 내용을 준비하고 작업 트리에서 해당 파일이 제거된 경우 색인에서 파일을 제거한다는 것을 의미합니다.
아니오를 지정하면 기본값은 "."입니다. 즉, 현재 디렉토리와 그 하위 디렉토리에서 추적된 모든 파일을 업데이트합니다.
Obay그 간단한 솔루션은 저에게 잘 맞습니다.
git rm $(git ls-files --deleted)
Houssem Badri.gitconfig
에 추가하려면 다음을 수행하십시오.
[alias] rma = !git ls-files --deleted -z | xargs -0 git rm
그런 다음 실행하기만 하면 됩니다.
git rma
Evan Morangit ls-files --deleted -z | xargs -0 git rm --cached
이것은 이전에 git이 추적한 모든 삭제된 파일을 제거하고 파일 이름에 공백이 있는 경우를 처리합니다.
xargs -0 -r
을 사용해야 할 수도 있습니다. 이렇게 하면 null 콘텐츠를 파이프할 때 xargs
편집: --cached
및 --deleted
플래그는 아직 삭제되지 않은 파일을 실수로 삭제하는 것을 방지하기 위해 함께 사용됩니다.
jonathan3692bf수정 및 삭제된 파일을 자동으로 준비하도록 명령에 지시하지만 Git에 알리지 않은 새 파일은 영향을 받지 않습니다.
-NS
--모두
git add . && git commit -m -a "Your commit"
또는
git add --all && git commit -m "Your commit"
ilgam처리할 파일이 많은 경우에도 다음이 작동합니다.
git ls-files --deleted | xargs git rm
당신은 또한 코멘트와 함께 커밋하고 싶을 것입니다.
자세한 내용은 유용한 Git 스크립트를 참조하십시오.
l3x어떤 명령이 실제로 실행되고 있는지 보려면 -t
를 사용하십시오.
방금 Virender 답변을 조정하여 동일하게 수행했습니다.
git ls-files --deleted -z | xargs -t -0 git rm
Venkateswara Raogit-add 플래그는 제거된 파일만 준비하지 않습니다. 수정한 파일이 모두 삭제된 파일이면 문제가 없지만 git-status를 실행하고 출력을 구문 분석해야 합니다.
Jeremy의 답변을 바탕으로 내가 얻은 것은 다음과 같습니다.
git status | sed -s "s/^.*deleted: //" | grep "\(\#\|commit\)" -v | xargs git rm
- 파일의 상태를 가져옵니다.
- 삭제된 파일의 경우 파일 이름을 분리합니다.
- #로 시작하는 모든 줄과 "deleted"라는 단어가 있는 상태 줄을 제거합니다. 정확히 무엇인지 기억나지 않고 더 이상 존재하지 않으므로 다른 상황에 맞게 수정해야 할 수도 있습니다. 표현식 그룹화는 GNU 고유의 기능일 수 있으므로 gnutils를 사용하지 않는 경우 여러
grep -v
행을 추가해야 할 수도 있습니다. - 파일을
git rm
에 전달하십시오.
이제 이것을 쉘 별명에 붙이십시오 ...
Xiong Chiamiov말한 바와 같이
git add -u
삭제를 위해 제거된 파일을 준비하지만 업데이트를 위해 파일도 수정합니다.
수정된 파일을 언스테이징하려면 다음을 수행할 수 있습니다.
git reset HEAD <path>
커밋을 정리하고 깨끗하게 유지하려는 경우.
참고: 삭제된 파일을 언스테이징할 수도 있으므로 이러한 와일드카드에 주의하십시오.
Community Wikigit commit -m 'commit msg' $(git ls-files --deleted)
이것은 이미 파일을 삭제 한 후에 저에게 효과적이었습니다.
Chadgit rm $(git ls-files -d)
git ls-files
명령으로 나열된 모든 파일을 제거합니다(-d는 삭제된 파일만 표시). 파일 이름이나 경로에 공백이 있는 파일에는 작동하지 않지만 기억하기 쉽습니다.
A. Albershteyn나는 같은 것이 필요했고 git gui "단계가 변경됨"버튼을 사용했습니다. 그것은 또한 모든 것을 추가합니다.
그리고 "무대 변경"후 "커밋"했습니다 ...
그래서 내 작업 디렉토리는 다시 깨끗합니다.
Community Wikigit add -u <filenames>
를 사용하여 삭제된 파일만 준비할 수 있습니다.
예를 들어 templates/*.tpl
파일을 삭제한 경우 git add -u templates/*.tpl
합니다.
-u
는 저장소에 존재하지만 작업 디렉토리에 더 이상 존재하지 않는 파일을 참조하기 위해 필요합니다. git add
의 기본값은 작업 디렉토리에서 파일을 찾는 것이며, 거기에서 삭제한 파일을 지정하면 찾지 않습니다.
thomasrutterrm-all
명령으로 삭제된 파일을 준비하기 위한 시스템 별칭 추가
UNIX alias rm-all='git rm $(git ls-files --deleted)'
WINDOWS doskey rm-all=bash -c "git rm $(git ls-files --deleted)"
메모
Windows에는 bash
설치되어 있어야 합니다.
Haris Krajina(또 다른 변형)
디스크 파일에서 이미 삭제된 모든 파일을 삭제하고 하나의 특정 폴더에서만 삭제하고 다른 폴더는 그대로 두고 싶었습니다. 다음은 나를 위해 일했습니다.
git ls-files --deleted | grep <folder-name> | xargs git rm
urban뭔가
git status | sed -s "s/^.*deleted: //" | xargs git rm
할 수 있습니다.
Jeremy French비주얼 스튜디오 프로젝트의 경우
'git ls-files --deleted | sed 's/(.*)/"\1"/'| xargs git rm'
삭제된 파일 경로에 공간이 있을 때 유용합니다.
Sawyer그냥 단순히
git add . && git commit -m "the message for commit" && git push
Ricardolcm지금까지 찾은 가장 유연한 솔루션은
git cola
그리고 준비하려는 모든 삭제된 파일을 선택합니다.
(참고로 저는 일반적으로 git에서 모든 명령줄을 수행하지만 git은 제거된 파일을 약간 어색하게 처리합니다.)
Broes De Cat출처 : http:www.stackoverflow.com/questions/492558/removing-multiple-files-from-a-git-repo-that-have-already-been-deleted-from-disk