[Git] git reset - 이전 commit으로 돌아가기

2024. 12. 24. 09:49·Git

Head는 현재 작업 중인 브랜치를 가리킵니다.

 

그리고 브랜치는 일반적으로 최근에 생성한 commit을 가리킵니다.

 

하지만 이 브랜치가 가리키는 commit 위치를 이전 commit 중 하나로 바꿀 수도 있으며,

 

그 때 마다 현재 작업중인 workspace의 내용 또한 그 commit에 해당하는 내용으로 바뀝니다.

 

이를 바꾸려면 git reset 명령어를 사용하면 됩니다.

soft/mixed/hard

git reset을 사용하면 저장소는 우리가 지정한 commit id에 해당하는 commit 상태로 돌아가게 됩니다.

 

여기서 세 가지 옵션을 통해 저장소 외에도 staging area, workspace의 상태도 결정할 수 있습니다.

soft

저장소만 이전 commit으로 돌아가고, staging area와 workspace의 파일은 현재 상태 그대로 둡니다.

git reset --soft [commit id]

mixed

저장소와 staging area의 파일이 이전 commit으로 돌아가고, workspace의 파일은 현재 상태 그대로 둡니다.

git reset --mixed [commit id]

hard

저장소와 staging area, workspace 모두 이전 commit으로 돌아갑니다.

git reset --hard [commit id]

현재 commit을 기준으로 reset하기

Commit id를 일일이 확인하기 번거로울 때는, head를 기준으로 몇 번째 commit을 지정할 수 도 있습니다.

// 바로 이전의 commit을 가리킵니다.
git reset --hard HEAD^

// n번째 이전의 commit을 가리킵니다.
git reset --hard HEAD~n

 

+) reset은 이전의 commit 뿐 아니라 이후의 commit으로도 이동할 수 있습니다.

Reset 후 다시 앞 commit으로 돌아가기 

git reset을 통해 이전 commit으로 돌아가도, 그 뒤의 commit들은 지워지지 않고 여전히 남아 있습니다.

 

때문에 commit id만 알고 있다면 언제든지 이전의 commit으로 reset할 수 있습니다.

 

만약 돌아가고자 하는 commit의 id를 모른다면, git reflog를 이용해 이때까지 head가 가리켰던 commit들을 확인하여 알아낼 수 있습니다.

git reflog

여기서 HEAD@{ }가 가리키는 숫자가 작을 수록 최근에 head가 방문한 commit을 가리킵니다.

여기서 commit id 대신 HEAD@{n}을 대신 사용할 수도 있습니다.

git reset --hard HEAD@{1}
728x90

'Git' 카테고리의 다른 글

[Git] git merge - 브랜치 합치기  (0) 2024.12.25
[Git] git branch - 브랜치 다루기  (0) 2024.12.25
[Git] git config alias - Git 단축 명령어 임의로 설정해서 사용하기  (0) 2024.12.23
[Git] user config (name, email) 설정하기  (0) 2024.12.23
[Git] Git의 주요 작업 및 명령어  (0) 2023.09.16
'Git' 카테고리의 다른 글
  • [Git] git merge - 브랜치 합치기
  • [Git] git branch - 브랜치 다루기
  • [Git] git config alias - Git 단축 명령어 임의로 설정해서 사용하기
  • [Git] user config (name, email) 설정하기
Rayi
Rayi
  • Rayi
    아카이브
    Rayi
  • 전체
    오늘
    어제
    • 분류 전체보기 (262)
      • CS (40)
        • ML (3)
        • CV (2)
        • PS (34)
      • Reveiw (17)
        • Paper (17)
        • Github (0)
      • Pytorch (5)
      • Language (58)
        • Python (7)
        • JavaScript (32)
        • TypeScript (16)
        • C++ (3)
      • IDE (12)
      • Git (13)
      • Frontend (71)
        • React (8)
        • SolidJS (20)
        • CSS (12)
      • UI (3)
      • Backend (15)
        • DB (17)
        • Node.js (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CS
    GAN
    PyTorch
    ts
    API
    UI
    ps
    react
    DB
    C++
    ML
    Three
    mongo
    review
    frontend
    SOLID
    CSS
    deploy
    Git
    CV
    js
    html
    python
    vscode
    Express
    figma
    PRISMA
    postgresql
    nodejs
    backend
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Rayi
[Git] git reset - 이전 commit으로 돌아가기
상단으로

티스토리툴바