일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- js
- nodejs
- Git
- ML
- Linux
- ts
- Express
- mongo
- SOLID
- CV
- vscode
- python
- figma
- GAN
- frontend
- DM
- react
- CSS
- UI
- API
- postgresql
- threejs
- DB
- PRISMA
- review
- C++
- PyTorch
- html
- sqlite
- ps
- Today
- Total
아카이브
[Git] git reset - 이전 commit으로 돌아가기 본문
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}
'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 |