Git 리포지토리에서 여러 개의 삭제 된 파일을 제거하는 방법 what will

일부 파일을 삭제했으며 아래와 같이 자식 상태가 표시됩니다.

나는 커밋하고 추진했다.

GitHub는 여전히 저장소에서 삭제 된 파일을 표시합니다. GitHub 리포지토리에서 파일을 어떻게 삭제합니까?

# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    modules/welcome/language/english/kaimonokago_lang.php
#   deleted:    modules/welcome/language/french/kaimonokago_lang.php
#   deleted:    modules/welcome/language/german/kaimonokago_lang.php
#   deleted:    modules/welcome/language/norwegian/kaimonokago_lang.php

를 사용 git rm하면 다음을 제공합니다.

usage: git rm [options] [--] <file>...

-n, --dry-run         dry run
-q, --quiet           do not list removed files
--cached              only remove from the index
-f, --force           override the up-to-date check
-r                    allow recursive removal
--ignore-unmatch      exit with a zero status even if nothing matched



답변

git add -u

모든 변경 사항을 업데이트합니다


답변

매우 조심하십시오 git rm .; 원하는 것보다 더 많이 제거 할 수 있습니다. 물론 복구 할 수는 있지만 복구 할 필요는 없습니다.

가장 간단한 방법은 다음과 같습니다.

git rm modules/welcome/language/english/kaimonokago_lang.php \
       modules/welcome/language/french/kaimonokago_lang.php \
       modules/welcome/language/german/kaimonokago_lang.php \
       modules/welcome/language/norwegian/kaimonokago_lang.php

파일이 존재하지 않기 때문에 쉘 와일드 카드를 사용할 수는 없지만 적어도 Bash에서 사용할 수 있습니다.

git rm modules/welcome/language/{english,french,german,norwegian}/kaimonokago_lang.php

또는 다음을 고려하십시오.

git status | sed -n '/^# *deleted:/s///p' | xargs git rm

이것은의 출력을 취하고 git status기본적으로 아무것도 인쇄하지 않지만 ( sed -n) 시작하는 행 # deleted:에서는를 제거 #하고 deleted:남은 것을 인쇄합니다. xargs인수를 모아서 git rm명령에 제공합니다 . 이름의 유사성 (또는 비 유사성)에 관계없이 여러 파일에 적용됩니다.


답변

ByScripts 답변의 다른 버전은

git rm $(git ls-files --deleted)

이것은 git에서 삭제 된 파일 만 제거합니다.

수정 된 파일 만 추가 할 때도 사용할 수 있습니다.

git add $(git ls-files --modified)

이 명령은 Windows 용 gitbash에서도 작동합니다.


답변

변경 사항을 모두 업데이트하십시오.

git add -u

삭제 된 파일은 준비되지 않은 (보통 빨간색)에서 준비된 (녹색)으로 변경되어야합니다. 그런 다음 삭제 된 파일을 제거합니다.

git commit -m "note"


답변

수정 된 파일 준비에 신경 쓰지 않는 가장 좋은 솔루션은 mshameers 및 / 또는 pb2q에서git add -u 말한대로 사용 하는 입니다.

삭제 된 파일을 제거하고 수정 된 파일을 준비하지 않으 ls-files려면 --deleted옵션 과 함께 인수 를 사용해야한다고 생각합니다 (regex 또는 다른 복잡한 인수 / 옵션을 사용할 필요가 없습니다).

git ls-files --deleted | xargs git rm


답변

예, git rm <filename>파일의 삭제 된 상태를 준비합니다. 여기서 <filename>glob 패턴이 될 수 있습니다.

$ git rm modules/welcome/language/*/kaimonokago_lang.php
rm modules/welcome/language/english/kaimonokago_lang.php
rm modules/welcome/language/french/kaimonokago_lang.php
rm modules/welcome/language/german/kaimonokago_lang.php
rm modules/welcome/language/norwegian/kaimonokago_lang.php

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    modules/welcome/language/english/kaimonokago_lang.php
#       ...

그러면 커밋 할 수 있습니다.

git commit -a 원하는 경우 한 번에이 작업을 수행합니다.

당신은 또한 사용할 수 있습니다 git add -u다음, 모든 삭제 된 파일을 포함하여 모든 변경 사항을, 무대 커밋.


답변

커밋을 위해 준비되지 않은 파일을 많이 삭제하면 다음 git rm과 같이 한 번에 모두 표시 할 수 있습니다.

for i in `git status | grep deleted | awk '{print $3}'`; do git rm $i; done

질문 답변자가 언급했듯이에주의하십시오 git rm.