디스크에서 이미 삭제된 여러 파일을 Git repo에서 제거
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 .
git ls-files --deleted -z | xargs -0 git rm
당신이 찾고 있는 것일 수도 있습니다.나한테는 효과가 있어..
사용할 수 있습니다.
git add -u
삭제된 파일을 준비 영역에 추가한 후 커밋하려면
git commit -m "Deleted files manually"
단순히 실행하는 경우:
git add -u
git은 인덱스를 업데이트하여 삭제한 파일이 실제로 다음 커밋의 일부가 되어야 함을 알 수 있습니다.그런 다음 "git commit"을 실행하여 변경 내용을 체크인할 수 있습니다.
또는 다음을 실행하는 경우:
git commit -a
이러한 변경(및 기타 변경)은 자동으로 수행되고 커밋됩니다.
업데이트: 삭제된 파일만 추가하려면 다음을 수행하십시오.
git ls-files --deleted -z | xargs -0 git rm
git commit
아마 -A:를 찾고 있을 겁니다.
git add -A
것 - git add - u 와와 、 와와u uuuuuu uuu uuuu 。은 대략 hg에 합니다.addremove
을 사용하다
삭제된 파일만 스테이징하려면:
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
나중에 편리하게 사용할 수 있도록 기본 명령 집합에 별칭을 지정할 수 있습니다.
git rm test.txt
실제 파일을 삭제하기 전 또는 삭제한 후.
git-add를 '--all' 또는 '--update' 옵션과 함께 사용하면 원하는 것보다 더 많은 것을 얻을 수 있습니다.새 파일 및/또는 수정된 파일도 색인에 추가됩니다.다른 파일을 건드리지 않고 git에서 삭제된 파일을 삭제하는 경우 bash 에일리어스가 설정되어 있습니다.
alias grma='git ls-files --deleted -z | xargs -0 git rm'
파일 시스템에서 제거된 모든 파일이 삭제된 것으로 인덱스에 추가됩니다.
그게 중요한 건 아니지만, 나는 선택된 대답에 동의하지 않는다.
git add -u
...는 작업 트리의 해당 파일이 제거된 경우 인덱스에서 파일을 제거하지만 추적된 파일의 수정된 새 내용도 준비합니다.
git rm $(git ls-files --deleted)
한편, 추적된 삭제된 파일만 관리됩니다.
그래서 내 견해로는 후자가 더 나은 선택이다.
변경사항이 이것뿐이라면 간단히 다음 작업을 수행할 수 있습니다.
git commit -a
모든 변경을 커밋합니다.삭제된 파일도 포함됩니다.
git 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.
git add -u
-u --update 작업 트리가 아닌 인덱스에서 이미 추적된 파일과만 일치합니다.즉, 새 파일은 스테이징하지 않지만 추적된 파일의 수정된 새 내용을 스테이징하고 작업 트리에서 해당 파일이 제거된 경우 인덱스에서 파일을 제거합니다.
no 가 지정되어 있는 경우는, 디폴트로 「」로 합니다.즉, 현재 디렉토리와 그 서브 디렉토리의 모든 추적 대상 파일을 갱신합니다.
이 심플한 솔루션이라면 문제 없습니다.
git rm $(git ls-files --deleted)
를 에 ).gitconfig
다음을 수행합니다.
[alias]
rma = !git ls-files --deleted -z | xargs -0 git rm
이제 실행만 하면 됩니다.
git rma
git rm $(git ls-files -d)
되어 모든 파일을 삭제합니다.git ls-files
을 이용하다 또는
git ls-files --deleted -z | xargs -0 git rm --cached
이렇게 하면 이전에 git에 의해 추적된 모든 삭제된 파일이 삭제되고 파일 이름에 공백이 있는 경우도 처리됩니다.
, POSIX 를 사용할 필요가 .xargs -0 -r
과 같은 원인이 됩니다.xargs
null content는 됩니다.
집::--cached
★★★★★★★★★★★★★★★★★」--deleted
플래그는 아직 삭제되지 않은 파일이 실수로 삭제되는 것을 방지하기 위해 동시에 사용됩니다.
전술한 바와 같이
git add -u
는 삭제된 파일을 삭제하기 위해 스테이징하지만 업데이트하기 위해 파일을 수정하기도 합니다.
수정할 수 있는 파일을 분할 해제하려면
git reset HEAD <path>
만약 당신이 당신의 약속을 체계적이고 깨끗하게 유지하길 원한다면요.
이렇게 하면 삭제된 파일을 분할할 수도 있으므로 와일드카드를 사용할 때 주의하십시오.
수정 및 삭제된 파일을 자동으로 준비하도록 명령어를 전달하지만 Git에 알리지 않은 새 파일은 영향을 받지 않습니다.
-a
git add . && git commit -m -a "Your commit"
또는
git add --all && git commit -m "Your commit"
처리할 파일이 많은 경우에도 다음 작업을 수행할 수 있습니다.
git ls-files --deleted | xargs git rm
당신은 아마 코멘트로 커밋하고 싶을 것입니다.
자세한 내용은 유용한 Git 스크립트를 참조하십시오.
★★★★★★를 사용해 .-t
가 실제로 되고 있는지 합니다.
방금 Virender의 답변을 수정했습니다.
git ls-files --deleted -z | xargs -t -0 git rm
git-add할 플래그 중 삭제된 파일만 스테이징할 수 있는 것은 없습니다.변경한 것이 삭제된 파일뿐이라면 문제 없습니다.그렇지 않으면 git-status를 실행하여 출력을 해석해야 합니다.
제레미의 대답에 따르면, 내가 얻은 것은 다음과 같다.
git status | sed -s "s/^.*deleted: //" | grep "\(\#\|commit\)" -v | xargs git rm
- 파일 상태를 가져옵니다.
- 삭제된 파일의 경우 파일 이름을 분리합니다.
- #s로 시작하는 모든 행과 "deleted"라는 단어가 포함된 상태 행을 삭제합니다.정확히 어떤 행인지 기억나지 않고 존재하지 않기 때문에 상황에 따라 이 행을 변경해야 할 수 있습니다.표현식의 그룹화는 GNU 고유의 기능이라고 생각하기 때문에 gnutils를 사용하지 않는 경우 여러 개를 추가해야 할 수 있습니다.
grep -v
줄들. - 파일 전달 대상
git rm
.
이걸 조개껍데기 가명으로 붙이는 건...
git commit -m 'commit msg' $(git ls-files --deleted)
이미 파일을 삭제한 후에 이 방법이 효과가 있었습니다.
같은 것이 필요해서 git gui "stage changed" 버튼을 사용했습니다.모든 것을 추가합니다.
'스테이지 체인지' 후에 '커밋'을 했는데...
작업 디렉토리가 다시 깨끗해졌습니다.
사용할 수 있습니다.git add -u <filenames>
삭제된 파일만 스테이징합니다.
예를 들어 파일을 삭제한 경우templates/*.tpl
, 그 후 를 사용합니다.git add -u templates/*.tpl
.
그-u
는 저장소에는 존재하지만 작업 디렉토리에는 존재하지 않는 파일을 참조하기 위해 필요합니다.그 이외의 경우 디폴트는git add
작업 디렉토리에서 파일을 찾는 것입니다.삭제된 파일을 지정해도 찾을 수 없습니다.
삭제된 파일을 명령으로 준비하기 위한 시스템 별칭 추가rm-all
UNIXalias rm-all='git rm $(git ls-files --deleted)'
창문들doskey rm-all=bash -c "git rm $(git ls-files --deleted)"
메모
Windows 에서는,bash
설치된.
(또 다른 변형)
디스크 파일에서 이미 삭제된 모든 폴더는 삭제하지만 특정 폴더는 삭제하지 않고 다른 폴더는 변경하지 않고 삭제하려고 했습니다.다음과 같은 것이 도움이 되었습니다.
git ls-files --deleted | grep <folder-name> | xargs git rm
비슷한 것
git status | sed -s "s/^.*deleted: //" | xargs git rm
할 수 있을 것 같아요.
비주얼 스튜디오 프로젝트용
'git ls-files --deleted | sed 's/(.*)/"\1"/'| xargs git rm'
삭제된 파일 경로에 공간이 있을 때 유용합니다.
간단하게
git add . && git commit -m "the message for commit" && git push
로컬 저장소가 아닌 Repo에서 .log로 끝나는 모든 파일 삭제
git rm --cached $(git ls-files | grep "\.log$")
언급URL : https://stackoverflow.com/questions/492558/removing-multiple-files-from-a-git-repo-that-have-already-been-deleted-from-disk
'programing' 카테고리의 다른 글
EPPlus를 사용한 Excel to DataTable - 편집용으로 Excel 잠김 (0) | 2023.04.24 |
---|---|
방금 변수를 할당했는데 echo $variable이 다른 것을 나타냅니다. (0) | 2023.04.19 |
콘솔 앱으로 표시할 것인지 윈도우 앱으로 표시할 것인지를 스스로 결정하는 C# 앱을 만들려면 어떻게 해야 합니까? (0) | 2023.04.19 |
wpf에서 이미지를 플립하는 방법 (0) | 2023.04.19 |
tar, gz, zip 또는 bzip2를 사용하여 파일 분할 (0) | 2023.04.19 |