“git add <dir>”을 취소 하시겠습니까?


186

"git add dir"명령을 사용하여 실수로 파일을 추가했습니다. 아직 "git commit"을 실행하지 않았습니다. 이 디렉토리와 그 디렉토리에 포함 된 모든 것을 커밋에서 제거하는 방법이 있습니까?

나는 시도 git reset dir했지만 작동하지 않았다. 분명히 git reset file그것을 취소하는 방법입니다. 그러나 파일이 너무 많고 시간이 거의 없습니다.


6
git reset <path>해당 경로의 색인을 업데이트하여 일치하도록합니다 HEAD(현재 커밋). 작업 트리를 건드리지 않습니다.
Cascabel

답변:


279

색인에서 디렉토리와 그 안의 모든 것을 제거하려면

git rm --cached -r dir

--cached스위치 차종은 git rm만하지 작업 복사본을 터치 인덱스에서 작동합니다. -r스위치는 재귀 수 있습니다.


12
"색인에서 전체 준비된 디렉토리를 제거하는 것"은 git 명령에 대한 약간 더 나은 설명이 될 것입니다. 맛의 문제.
Sascha Gottfried

1
그렇기 때문에 --cached스위치를 굵게 표시했습니다 . 그럼에도 불구하고 인덱스에만 적용되도록 답변을 편집했습니다.
아리스토텔레스 Pagaltzis

정화에 대한 @SaschaGottfried 덕분에, 나는 :) 심지어 편집으로 처음에는 무서워하지만, 당신의 의견은 취소되었다
맥스 폰 Hippel을

나는 거의 내 전체 폴더를 삭제했다 :이 후 ...이 git reset HEAD folder모든 것을 고정 ...하지만이 작업을 수행하기 전에를 수행하고 git status folder폴더에있는 모든 파일을 '삭제'했는지 확인하십시오.
Bengalaa

21

사용하고 싶을 것 git rm --cached -r <dir>입니다. 이 명령은 인덱스에서 준비된 디렉토리 내용을 제거합니다.

디렉토리가 이미 추적 된 경우 새 파일과 기존 파일을 수동으로 찾아 스테이지를 해제해야합니다.

git reset <dir>그 후 디렉토리 내부의 기존 (이미 추적 된) 파일을 재설정하기 위해 실행 됩니다.


2019 업데이트 :

를 실행하면 git reset directory새로 추가 된 모든 파일의 스테이지가 해제됩니다.


하지 git reset <dir>만 충분?
바나나

@ Bananach 방금 시도한 것입니다. 그렇습니다 git reset <dir>. 답은 2011 년부터 였으므로 8 년 전에 이미 효과가 있었는지 확실하지 않습니다. 답변을 업데이트하겠습니다. 힌트 주셔서 감사합니다!
knittl


11

언 스테이지 디렉토리

$ git reset <dir>

내가 준비한 모든 파일과 폴더를 스테이지 해제합니다.

$ git add <dir>

준비되지 않은 디렉토리 확인

스테이징에서 디렉토리 및 해당 컨텐츠 제거를 확인하려면 (예 : "커밋 변경") 다음을 실행하십시오.

$ git status

또는

$ git diff --staged --name-only 

이전에 준비한 폴더 나 파일이 아직 준비되어 있지 않은지 확인합니다.


2

아직 커밋되지 않은 준비된 파일 / 폴더를 제거하는 간단한 명령은- git restore --staged <dir>입니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.