ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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>
    

    https://www.datacamp.com/tutorial/git-reset-revert-tutorial

     

    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>

     

    https://www.datacamp.com/tutorial/git-reset-revert-tutorial

     

    다음과 같이 되돌린 커밋이 추가되었다.

     

     

    revert 명령어에서 바로 커밋되게 하지 않는 옵션도 있다. --no-commit 옵션을 추가하자.

    git revert --no-commit <commit_id>
    

     

     

     

    🔗 참고

    Git Reset and Revert Tutorial for Beginners

     

    반응형

    댓글

Designed by Tistory.