Skip to content

Qvil Blog

[Git]Git Commit 복구하기(Feat. reset)

git, reset, recovery1 min read

Git을 사용하면서 commit을 잘못하거나 merge를 잘못해서 이전 커밋으로 돌아가고 싶은 경우에 사용.

7.7 Git 도구 - Reset 명확히 알고 가기 <= 공식문서에 자세하게 설명되어 있습니다. 이 문서를 정독하면 아래 글을 볼 필요가 없습니다.

Git의 기본적인 HEAD, Index, Working Directory에 대한 이해가 되었다고 가정하고 진행합니다.

문법(Syntax)

옵션(Option) - Default mixed

  • git reset --soft
    • 해당 커밋으로 이동하고 HEAD만 변경됩니다.
  • git reset --mixed(Default)
    • 해당 커밋으로 이동하고 HEAD가 변경되고, Index에 Add(Stage상태)합니다.
  • git reset --hard
    • 주의 : 작업한 내용(Working Directory)이 변경됩니다.> reset한 뒤 다시 복구 할 수 없습니다. **추천하지 않습니다.(Not recommended)**
    • 해당 커밋으로 이동하고 HEAD가 변경되고, Index에 Add(Stage상태)하고, Working Directory의 파일을 변경합니다.

git log로 commit number를 확인한 뒤, 돌아가고(복구하고) 싶은 commit number를 입력합니다.

예제(Example)

특정 commit으로 되돌리기

1git reset {commit_number}

commit 하나 되돌리기

1git reset HEAD^
2git reset HEAD~1

commit 두개 되돌리기

1git reset HEAD^^
2git reset HEAD~2

0e99fe1 commit으로 HEAD가 이동한 예제

git-reset2

해당시점(원하는 commit)에서 push

git push가 제대로 동작하지 않는 경우 git push origin +master

주의 : 상위 커밋(작업한 내용)이 삭제될 수 있습니다.

이전 커밋으로 되돌릴 경우 상위 커밋(이미 진행한 작업)이 지워질 수 있으므로 에러가 출력될 수 있습니다. push 명령에 브랜치 이름에 +를 붙이면 강제로 push 할 수 있습니다.

결론(Conclusion)

  1. git reset {commit_number}
  2. git push origin +master