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

Reading time ~1 minute

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으로 되돌리기

git reset {commit_number}

commit 하나 되돌리기

git reset HEAD^
git reset HEAD~1

commit 두개 되돌리기

git reset HEAD^^
git 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

immer는 객체 비구조화 문법(Object Destructuring)을 사용하면 동작하지 않는다.

## [immer](https://github.com/immerjs/immer)는 객체 비구조화 문법(Object Destructuring)을 사용하면 동작하지 않는다.아래는 redux에서 reducer쪽 immutable state를 immer...… Continue reading

2019 카카오 FE(Front-end) Meetup

Published on September 16, 2019

2019 카카오 개발자 컨퍼런스

Published on September 11, 2019