-
[Git] Git 커밋 되돌리는 다양한 방법 (git reset / git revert)📖 개발 공부/git 2023. 7. 14. 22:47
Git으로 작업을 할 때 버그가 생기거나, 이미 작업했던 커밋 중 수정하고 싶은 경우
커밋 내용을 되돌리거나(git revert), 커밋을 아예 취소하는(git reset) 경우가 종종 발생한다.이 글에서는 실습과 함께 되돌리거나/취소하는 명령어에 대해 알아보려고 한다.
명령어를 알아보기 전, 실습을 이해하기 위해 간단한 커밋 로그들을 보고가자!
commit b366d6832cc4ef88196ad4ba8850b71ce8ba60a8 (HEAD -> main) Author: ayoung0073 Date: Fri Jul 14 22:14:54 2023 +0900 test3.txt 추가 commit aad06133842414db6a3e9bcab1ead015e0a168ab Author: ayoung0073 Date: Sun May 14 22:12:47 2023 +0900 fix: test.txt 수정2 commit f1da4ca857e880e6ca72f1849a5806f76b4f27aa (test) Author: ayoung0073 Date: Sun May 14 21:35:41 2023 +0900 fix: test3.txt 제거
다음 커밋 로그들이 있는데, 여기서
"fix: test.txt 수정2" 내용의 id "aad06133842414db6a3e9bcab1ead015e0a168ab" 커밋으로 reset, revert 명령어로 되돌려보려고 한당.
이제 본론으로 가보자고
💻 git reset: 커밋 취소
git reset 명령어는 HEAD를 지정된 커밋으로 이동하고, 해당 커밋 이후의 모든 커밋을 버린다.
git reset <commit_id>
git reset 다양한 옵션
git reset 명령어에는 다양한 옵션이 있다.
--soft 옵션
이 옵션은 HEAD를 이전 커밋으로 이동시키지만, 변경 내용은 남아있다(stage 되어있다).
즉, add 명령어 필요없이 바로 commit이 가능하다.
--mixed 옵션 (default)
—soft 옵션과 같이 HEAD를 이전 커밋으로 이동시키지만, 변경 내용은 남아있다. 하지만 변경 내용이 unstage 상태로 코드가 남아있다.
코드를 반영하려면 add 명령어로 stage에 반영해서 commit 해야한다.
--hard 옵션
이 옵션은 돌아간 커밋 이후의 변경 이력은 모두 삭제한다. 변경 내용 또한 사라진다.
가장 최근 커밋으로 되돌리고 unstaged 상태의 변경 사항을 모두 제거하려면 --hard 옵션을 사용할 수 있다.
💻 git revert: 커밋 되돌리기
revert 명령어는 reset 과 다르게 커밋을 삭제하는 것이 아니라 커밋을 추가한다.
git revert 명령어는 취소하고 싶은 특정 커밋의 내용을 되돌리는 새로운 커밋을 만든다.
git revert <commit_id>
다음과 같이 되돌린 커밋이 추가되었다.
revert 명령어에서 바로 커밋되게 하지 않는 옵션도 있다. --no-commit 옵션을 추가하자.
git revert --no-commit <commit_id>
🔗 참고
Git Reset and Revert Tutorial for Beginners
반응형'📖 개발 공부 > git' 카테고리의 다른 글
[Git] Git의 다양한 merge 방법 이해하기 (Merge / Squash & Merge / Rebase & Merge) (0) 2023.05.28 [Git] commit을 변경하는 git commands (0) 2023.05.14