목차
commit 취소하기 (git revert)
- 커밋들에서 중간 커밋에 문제가 많은 커밋이 있어, 이 커밋을 삭제해야 하는 상황입니다. 하지만 안타깝게도 과거를 삭제하거나 조작이 불가능합니다.
- 대신 commit을 취소하는 commit을 생성하는 것은 가능합니다.
- 즉, 기록 자체를 지우지는 못하고 취소하는 새로운 기록을 만드는 것입니다.
- 만약 위 커밋들 중에서 b파일 생성한 커밋을 지우고 싶다면 저 커밋 기록자체를 지우지는 못하고 취소하는 새로운 커밋을 생성하게 할 수는 있습니다.
- 참고 : commit을 취소할때도 충돌문제를 생각해야 합니다.
- 커밋 취소하기
- 특정 커밋 1개 취소하기
-
git revert 커밋아이디
-
- 커밋 여러 개 취소하기
-
git revert 커밋아이디1 커밋아이디2
-
- 최근 커밋 취소하기
-
git revert HEAD
-
- 특정 커밋 1개 취소하기
- vim 에디터가 뜰 경우 커밋 메시지를 수정하라는 것인데 i를 누르고 글자를 수정한 다음 esc를 누르고 :wq를 통해 저장하면 됩니다.

commit reset하기 (git reset)
- 커밋들을 완전히 지워버리고 특정시점으로 돌아가고 싶을때 git reset을 사용합니다.
- 즉, 타임머신을 타고 과거로 돌아가는 것입니다.
- git reset은 아주 위험한 기능입니다. 따라서 협업 시에는 절대 사용하지 말아야 합니다. 한 사람이 깃 리셋을 하게 되면 여태까지 작업 내역을 다 삭제하기 때문에 코드 공유하고 있는 사람들이 작업하고 있는 내용까지 다 삭제될 수 있습니다.
- 하지만 자신만의 branch에서 작업할 경우는 충분히 사용할 수 있습니다. (내가 한 커밋내역들이 지저분해서 soft옵션을 통해 reset 한 뒤 지금까지 커밋들을 통합해서 하나의 커밋으로 다시 올릴 수도 있습니다.)
- git reset은 아예 현재 기억까지 모두 다 잊어버리고 과거로 돌아가는 것입니다.
- 즉, 10살 때로 돌아가는데 10살 이후의 기억들은 모두 지워지고 그냥 실제로 10살 그 모습이 되는 것입니다.
- 진짜 코드 작업을 망해서 인생을 리셋시키고 싶을 때 사용하면 됩니다. (--hard 옵션인 경우)
- 하지만 기억들을 남겨놓는 방법이 있습니다. --soft 나 --mixed 옵션을 사용하면 됩니다.
- 과거로 돌아가기(git reset)
- 과거로 모든 걸 되돌리기
-
git reset --hard 커밋아이디
- 기억도 다 지워져서 복구를 할 수 없으니 주의해야 합니다!!
-
- 과거로 돌아가고, 그 이후의 작업물들을 staging area에 스테이징 해놓기
- 즉, 이후에 일어난 모든 커밋들이 스테이징에 한 번에 올라가져 있습니다.
- 기억은 남아있는 상태입니다!
-
git reset --soft 커밋아이디
- 즉, 이후에 일어난 모든 커밋들이 스테이징에 한 번에 올라가져 있습니다.
- 위와 동일하지만, 스테이징만 되지 않은 상태
- 마찬가지로 기억은 남아있는 상태입니다. (스테이징 되지 않은 상태입니다.)
-
git reset --mixed 커밋아이디
- 과거로 모든 걸 되돌리기
참고
'ETC > Git' 카테고리의 다른 글
[Git] GitFlow (0) | 2023.12.14 |
---|---|
[Git] GitHub 기본 (0) | 2023.12.14 |
[Git] Git commit된 파일로 복구하기 (git restore) (0) | 2023.12.13 |
[Git] Git branch / merge (0) | 2023.12.13 |
[Git] Git 기초 (0) | 2023.12.12 |