전체 복원

저장소에 대한 전체 커밋을 대상으로 복원한다.

Git reset으로 커밋 취소하기

git reset 명령이 실행되면 진행된 커밋 이전의 커밋으로 HEAD가 이동된다. HEAD가 바뀌므로 저장소의 상태도 HEAD가 가리키고 있는 커밋의 저장소 상태로 변경되어야 하는데, 그렇다면 인덱스와 작업 디렉토리는 어떻게 되는 것일까? 만약 어떤 파일이 수정되었거나 수정된 뒤 인덱스에 추가된 상태에서 git reset 명령이 실행된다면 어떻게 되는 걸까?

git reset 옵션

  • --mixed
    • 3개의 모드중 기본이 되는 모드이다. 옵션을 주지 않으면 이모드가 기본적으로 적용되기 때문이다.
    • mixed 모드는 작업 디렉토리는 유지하면서 인덱스를 HEAD와 함께 되돌린다.
  • --hard
    • hard 모드는 조심해서 사용해야 한다. 작업 디렉토리와 인덱스를 모두 유지하지 않고 이전 커밋으로 HEAD를 되돌리기 때문이다.
    • 작업하던 내용 모두를 정리하고자 할때만 의도적으로 사용해야 한다.
  • --soft
    • 현재의 인덱스 상태아 작업 디렉토리 내용을 그대로 보전한채 커밋만 취소할 경우 사용한다.

명령어

git reset 커밋ID

지정한 커밋ID 이후의 커밋이 취소된다. 단 해당 커밋ID는 유지된다.

그리고 현재 staging area에 커밋 대기중인 파일은 취소된다.

git reset 0bfa034d5d31a5d02194fabe0a27f2cfa5878b2b

git reset HEAD^

최신 커밋을 취소한다. 커밋은 했지만 push하지 않은 경우에 유용하다.

그리고 현재 staging area에 커밋 대기중인 파일은 취소된다.

git reset HEAD^

rest HEAD~2은 최근 커밋 2개를 취소한다.

git reset HEAD~2

git reset --hard HEAD~2

최근 커밋 2개를 취소하고 Working 디렉토리와 Staging Area에 있는 파일들을 모두 취소한다.

git reset --hard HEAD~2

git reset --soft HEAD~2

최근 커밋 2개를 취소하고 Working 디렉토리와 Staging Area에 있는 파일들을 모두 유지한다.

git reset --soft HEAD~2

- reset의 옵션

  • --soft : staging area(index) 보존, working directory 보존. 즉 모두 보존.
  • --mixed : staging area 취소, working directory 보존 (기본 옵션)
  • --hard : staging area 취소, working directory 취소. 즉 모두 취소.

git reset --hard ORIG_HEAD

ORIG_HEAD는 위험한 작업에 대한 포인터로 pull이나 merge가 여기에 해당 된다. reset --hard ORIG_HEAD를 하면 pull이나 merge로 인해 잘못된 또는 실수로 병합한 커밋을 취소할 수 있다

git reset --hard ORIG_HEAD

git revert HEAD

최신 커밋의 이력은 유지하되 내용을 취소한 후 취소한 내용으로 커밋을 추가 한다. 결과적으로 최신 커밋 이전으로 내용을 복원하되 이력은 유지된다

커밋을 이미 push한 경우 유용하다.

git revert HEAD

git reset --hard HEAD

Working Directory와 Staging Area에 추가된 모든 파일의 변경점을 모두 최소한다. 단 신규파일은 취소하지 않는다.

아래는 같은 명령어이다.

  • git checkout HEAD
  • git checkout -f

git clean -f [-d]

추적되지 않는 untracked 파일을 삭제한다. '-d'는 디렉토리까지 삭제한다.

results matching ""

    No results matching ""