git에서 마지막 커밋 후 모든 변경 사항 재설정


324

추가 된 파일 삭제, 수정 된 파일 재설정 및 삭제 된 파일 추가를 포함하여 마지막 커밋 후 디렉토리에 대한 모든 변경 사항을 어떻게 취소 할 수 있습니까?



8
@nawfal은 중복 일 수 있지만 '마지막 커밋 후 모든 변경 사항 재설정'은 해당 'git 저장소를 되 돌리는 방법'보다 더 많은 검색 기준 (Google에서 검색된 단어)과 일치합니다. D : 자신의 모국어로 영어를하지 않는 나 같은 사람들을 위해 적어도
Shirish Herwade

답변:


561

먼저 변경 사항을 재설정

git reset HEAD --hard

추적되지 않은 모든 것을 청소하십시오. 로 인해 추적되지 않은 파일을 유지하려면 .gitignore이 명령에주의하십시오.

git clean -fd

7
@ 아담 : 때로는 -x옵션을 원할 수도 있습니다.이 옵션 git clean은 무시 된 파일을 제거하도록 지시합니다.
Cascabel

31
.gitignore로 인해 추적되지 않은 파일을 유지하려면 git clean -fd명령에 주의하십시오 .
bitsoflogic

3
@ Levinaris : git clean -fd무시 된 파일을 삭제하지 않는 다른 방법 입니다. -x의지.
Robert Siemer

5
@RobertSiemer 사실, 가능합니다! 완전히 무시 된 파일로 구성된 폴더가 있으면 해당 폴더가 제거되어 무시 된 파일이 삭제됩니다. 여기에있는 것과 같은 .gitignore 파일을 고려하십시오 : stackoverflow.com/q/25554504/456645 . 이 예에서는 일부 폴더에 PHP 파일이 없다고 가정합니다. git clean -fd해당 폴더와 추적되지 않은 파일을 삭제합니다. git 버전 1.9.1로 테스트
bitsoflogic

3
그러나 왜 두 번째 '정리'가 필요한가?
Shirish Herwade '

71

추가 된 파일 삭제, 수정 된 파일 재설정 및 삭제 된 파일 추가를 포함하여 마지막 커밋 후 디렉토리에 대한 모든 변경 사항을 어떻게 취소 할 수 있습니까?

  1. 다음을 사용하여 추적 된 파일에 대한 변경 사항을 취소 할 수 있습니다 .

    git reset HEAD --hard
    
  2. 다음을 사용 하여 추적되지 않은 파일을 제거 할 수 있습니다 .

    git clean -f
    
  3. 다음을 사용 하여 추적되지 않은 파일 및 디렉토리를 제거 할 수 있습니다 .

    git clean -fd
    

    하지만 당신은 비 추적 파일에 대한 변경 사항을 실행 취소 할 수 없습니다 .

  4. 무시되고 추적되지 않은 파일과 디렉토리를 제거 할 수 있습니다

    git clean -fdx
    

    그러나 무시 된 파일로 변경을 취소 할 수는 없습니다 .

다음 clean.requireForcefalse같이 설정할 수도 있습니다 .

git config --global --add clean.requireForce false

를 사용할 때 -f( --force)를 사용 하지 마십시오 git clean.


2
굉장, 내가 필요한 것. 모든 관련 명령을 비교해 주셔서 감사합니다!
Marquee

-1

이 상황에서 작동하는 두 가지 명령이 있습니다.

root> git reset-하드 헤드 ~ 1

root> git push -f

더 많은 git 명령은이 페이지를 참조 하십시오


1
git push -f이 질문과 관련이 없으며이 시나리오에서 위험합니다
mustache1up
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.