문제

저는 자식 repo 는 삭제된 개의 파일에서 사용하는 rm ( git rm다)내 Git 상태는 다음과 같습니다:

#    deleted:    file1.txt
#    deleted:    file2.txt
#    deleted:    file3.txt
#    deleted:    file4.txt

삭제하려면 어떻게 해야 하는 이러한 파일에서 사용할 수동으로 통과하고 각각 추가 파일을 다음과 같다:

git rm file1 file2 file3 file4

이상적으로,나는 뭔가를 찾고는 동일한 방식으로 작동하는 git add . 지 않는 경우,그 가능합니다.

도움이 되었습니까?

해결책

Git1.x

$ git add -u

이렇게 진행하시면 자동적으로 단계 추적 파일--삭제를 포함하여 이전에 추적 파일이 있습니다.

Git2.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

You're probably looking for-A:

git add -A

이것은 비슷한 git add-u 이지만,또한 추가하는 새로운 파일이 있습니다.이것은 거의 동등한 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

alias 원하는 설정 명령한 나중에 사용할 수 있습니다.

git rm test.txt

전 또는 후에 당신을 삭제 실제 파일입니다.

로 git 을 사용하여 추가로'-모든'또는'--업데이트'옵션을 얻을 수 있습니다 더 이상 당신이 원하는.New 및/또는 수정된 파일도 추가 인덱스입니다.가 bash 별칭을 위해 설치하고 싶을 때를 제거하는 삭제된 파일에서 사용할 수 없는 다른 파일은:

alias grma='git ls-files --deleted -z | xargs -0 git rm'

는 모든 파일이 제거되었는 파일 시스템에서는 인덱스에 추가로 삭제됩니다.

하지 않는 것이 정말 중요하지만,의 내용에 동의하지 않 선택한 답변:

git add -u 

...을 제거에서 파일을 인덱스는 경우에는 해당 파일에서 근무가 제거되었지만,그것은 또한 단계를 수정된 새로운 내용의 추적 파일이 있습니다.

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

...다른 한편으로 단 rm 삭제된 파일을 추적할 수 있습니다.

그래서 후반에 넣은 더 나은 옵션입니다.

는 경우에는 그들만의 변경,단순히 할 수 있

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 --업데이트 만과 일치에 대해 이미 추적 파일을 인덱스보다는 작업 나무입니다.즉 그것은 결코 단계에 새로운 파일이지만,그것은 단계된 새로운 내용의 추적 파일과 하는 것이 제거에서 파일을 인덱스는 경우에는 해당 파일에서 작동하는 나무이 제거되었습니다.

지 않는 경우가 부여,기본적으로".";다시 말해서,업데이트하고 모든 파일에 현재 디렉토리와 그 하위 디렉터리에 있습니다.

는 간단한 솔루션을 위해:

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

하려는 경우 추가 .gitconfig 이렇:

[alias]
  rma = !git ls-files --deleted -z | xargs -0 git rm

다음 당신이해야 할 모든 실행:

git rma
git ls-files --deleted -z | xargs -0 git rm --cached

이를 제거하는 모든 삭제된 파일이 이전에 의해 추적 git 뿐만 아니라 처리하는 경우 당신의 파일 이름에 공백.

에 따라 귀하의 POSIX 변종,당신은 당신을 사용할 필요가 있습니다 xargs -0 -r:이 xargs 를 정상적으로 종료할 때 파이프 null 내용입니다.

편집: --cached--deleted 플래그에 사용되는 탠덤을 보호하기 위해 실수로 삭제하지 않은 파일에 이미 삭제되었습니다.

그것을 시도하십시오.

-a
--all
Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.

git add . && git commit -m -a "Your commit"

git add --all && git commit -m "Your commit"

사용하십시오 -t 을 보는 명령은 실제로 실행

나는 단지 조정 Virender 대답과 동일:

git ls-files --deleted -z | xargs -t -0 git rm

없음의 깃발을 git-추가 단계만 파일을 제거;는 경우 모든 수정은 삭제된 파일에,당신은 괜찮지만,그렇지 않으면,당신은 당신을 실행해야 git-상태를 분석합니다.

작업의 제레미의 응답,이것은 내가 무엇을 가지고:

git status |  sed -s "s/^.*deleted: //" | grep "\(\#\|commit\)" -v | xargs git rm
  1. 을 얻을 상태의 파일이 있습니다.
  2. 삭제된 파일을 분리할 파일의 이름입니다.
  3. 을 모두 제거하는 라인으로 시작#s 뿐만 아니라,상태 표시줄에는 단어"삭제"에서 그것은;내가 기억하지 않은 무엇이었다,정확히,그리고 그것은 거기에 더 이상은,그래서 당신을 수정해야 할 수도 있습니다 이를 위해 서로 다른 상황입니다.나는 생각한 그룹의 표현이 될 수 있습 GNU-특정한 기능,그래서를 사용하지 않는 경우 gnutils 해야 할 수 있습니다에 여러 추가 grep -v 라인입니다.
  4. 파일을 전달하기 git rm.

이 쉘에서 alias 지금...

git add -u

단계의 제거한 파일을 삭제한 파일을 수정에 대한 업데이트합니다.

을 unstage 에 파일을 수정할 수 있습 do

git reset HEAD <path>

당신을 유지하는 커밋을 조직하고 깨끗합니다.
참고: 수도 unstage 삭제된 파일은,그래서 조심하는 사람들과는 와일드카드.

다음은 작업한 경우에도 많은 파일을 처리:

git ls-files --deleted | xargs git rm

당신은 아마도 결정된다.

자세한 내용: 유용한 스크립트 Git

git commit -m 'commit msg' $(git ls-files --deleted)

이것은 나를 위해 일한 후 파일을 삭제했습니다.

내가 필요일 사용 git gui"무대 변경된"버튼을 누릅니다.그것도 추가합니다.

후"무대에 변경"제가 만든"commit"...

그래서 내 작업 디렉터리가 다시 청소합니다.

당신이 사용할 수 있는 git add -u <filenames> 단계는 삭제된 파일만 있습니다.

예를 들어,당신을 삭제한 파일 templates/*.tpl, 다음 사용 git add -u templates/*.tpl.

-u 가하기 위해 필요한 파일을 참조하에 존재하는 저장소하지만 더 이상에 존재 작업 디렉터리입니다.그렇지 않으면 기본값 git add 을 위해 작업 디렉토리에 있는 파일,그리고 지정하는 경우는 파일을 삭제한이 있는,그것을 찾을 수 없습니다.

뭔가

git status | sed -s "s/^.*deleted: //" | xargs git rm 

을 할 수 있습니다.

추가 시스템에 대한 별칭을 준비해 파일 삭제 명령 rm-all

UNIX alias rm-all='git rm $(git ls-files --deleted)'

WINDOWS doskey rm-all=bash -c "git rm $(git ls-files --deleted)"

참고

윈도우 필요 bash 설치됩니다.

(그러나 다른 변형)

내가 원하는 모든 이미에서 삭제 디스크 파일에서 그러나 하나의 특정 폴더를 떠나,다른 폴더를 그대로 유지합니다.다음과 같은 나를 위해 일했:

git ls-files --deleted  | grep <folder-name> | xargs git rm
git rm $(git ls-files -d)

을 제거하는 모든 파일별로 나열됩 git ls-files 명령(d 만 표시 파일을 삭제).이 작동하지 않는 파일 안에 공백이 들어 있는 파일 경로 또는지만,간단한 기억하기

Visual studio 프로젝트

'git ls-files --deleted | sed 's/(.*)/"\1"/'| xargs git rm' 

는 삭제된 파일의 경로를 공간

가장 유연한 솔루션을 내가 찾은 날짜

git cola

선택 삭제된 모든 파일을 원하는 단계입니다.

(참고로 나는 일반적으로 모든 것을 명령행에서 git 지만,git 핸들을 제거한 파일이 조금은 어색).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top