ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git- revert, reset
    개발언어/Git 2023. 8. 6. 15:20

    revert,reset의 필요 이유

    main 브런치로 릴리즈 했는데 오류로 인해 롤백해야하는 경우 이전 커밋으로 돌아가기위해 이 명령어를 사용한다.


    revert,reset차이


    git reset

    git reset --option [돌아갈 커밋]

    위 와 같은 차이가 존재 하므로 온라인 remote origin에 올리지 않고 로컬 커밋만 한 상태라면 커밋을 했더라도 reset만 하면 된다.

     

    git reset HEAD^

    바로 이전의 커밋으로 되돌려준다.

     


    git revert

    revert는 reset과 다르게 커밋을 삭제하는 것이 아니라 커밋을 추가한다. 그러나 이전 커밋과 정반대의 데이터를 추가하는 방식으로 커밋을 되돌린다.

     

    git commit -m "1번 커밋"
    git commit -m "2번 커밋"
    git commit -m "3번 커밋"
    
    git revert [1번 commit hash]

    위 명령어 처럼 실행하면 "1번 커밋" 이후의 커밋들이 삭제되는 것이 아니라, "1번 커밋"에 해당하는 내용만 삭제된다. 그리고 "Revert 1번 커밋"이라는 커밋에는 1번 커밋이 삭제된 이력이 남게된다.

     

    Revert "1번 커밋"
    3번 커밋
    2번 커밋
    1번 커밋

    즉 git log에는 위와 같은 log들이 찍힌다.

     

    git revert한 후 stage 상태만 유지하고, 바로 commit되게 하지 않으려면

    git revert --no-commit[커밋 해시]
    
    //이후
    git commit -m[커밋을 revert한 이유]
    
    git push

    git revert 시 위와 같은 옵션을 추가하면 된다.

     

    여러개의 커밋을 revert 할때

    git revert [커밋해시1]...[커밋해시2]

    와 같이 명령어를 입력한다.

    Revert "2번커밋해시"
    Revert "1번커밋해시"

    그럼 위와 같이 git log남게 된다.


    정리

    revert는 되돌릭고 싶은 커밋이 중간에 있을때 커밋 해시를 넣어 중간 커밋의 코드 내용만 삭제할 수 있고, 어떤 커밋이 왜 revert 됐는지 commit message를 통해 기록할 수 있음르오 더욱 유용하다.

    댓글

Designed by Tistory.