git checkout 모든 파일


127

내 저장소의 모든 파일에있는 모든 변경 사항을 제거하려면 어떻게해야합니까?

내가 지점에 있고 몇 가지 변경을 수행했다고 가정하십시오. git status"커밋을 위해 준비되지 않은 변경 사항"에 파일 집합을 반환하고 모든 파일에서 이러한 변경 사항을 모두 제거하고 싶습니다. 단일 명령으로 어떻게 할 수 있습니까?

하나의 파일 만 체크 아웃하려면 다음을 수행 할 수 있습니다.

git checkout -- <file>

git checkout --혼자서 커밋되지 않은 모든 파일 목록을 반환 한다는 것을 알았습니다 . 그러나 나는 그들 모두를 체크 아웃하는 방법을 찾을 수 없습니다 git checkout --all.

확인 man git checkout했지만 아무것도 찾을 수 없었습니다. 또한 Git : 하나를 제외한 모든 파일을 체크 아웃 하고 시도했지만 git checkout .작동하지 않았습니다.

git checkout --출력 을 반복하여 프로그래밍 방식으로 수행해야 합니까?

답변:


194

작업 디렉토리의 루트에있는 경우 다음을 수행 할 수 있습니다. git checkout -- . 있는 경우 현재 HEAD의 모든 파일을 체크 아웃하고 로컬 파일을 대체 할 수 있습니다.

git reset --hard작업 디렉토리를 재설정하고 모든 변경 사항 (색인 포함)을 바꿀 수도 있습니다 .


두 가지 옵션이 동일합니까 (HEAD로 재설정하는 경우)?
lucidbrot

10
아니요, 특정 차이점이 있습니다. 예를 들어 git checkout -- .인덱스 상태에 대한 변경 사항 만 재설정합니다. 따라서 이미 색인에 파일을 추가했다면 이것이 재설정됩니다. 반면에 git reset --hard인덱스도 삭제되므로, 예를 들어 추적되지 않은 파일이 인덱스에 추가 된 경우 (추적을 시작하기 위해) 해당 파일도 제거됩니다. git checkout또한 매우 유용 할 수있는보다 구체적인 경로를 전달하여 작업 디렉토리를 부분적으로 만 복원 할 수 있습니다.
찌를


4
@poke Hi Poke, 나는 확실하다 git checkout-. 작동하지 않습니다. 나는 여러 단계되지 않은 변경 사항을 시도했습니다.
아만

2
동일한 결과를 얻기위한 다른 명령 : git checkout --force,git reset --hard
tjalling

3

내가 유용하다고 생각한 다른 방법은 다음과 같습니다.

git checkout <wildcard> 

예:

git checkout *.html

더 일반적으로:

git checkout <branch> <filename/wildcard>

1
셸에서 globbing이 활성화되어 있고 작업 디렉토리에 추적되지 않은 파일이있는 경우 별표를 이스케이프하지 않으면 실패합니다 (예 : git checkout \*또는) git checkout '*'.
Josh Cooley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.