[Git] git revert

이수정·2022년 12월 13일
0

기본 사용법) 💻 git revert [되돌린 커밋 해쉬]

[ git reset과의 차이점 ]
git reset은 commit 기록이 남지 않지 않고 HEAD가 가리키는 위치만 달라진다.
반면, git revert는 되돌린 코드들에 대해 다시 commit을 남겨준다.

💡 이런 차이점으로 인해, git reset은 혼자 로컬에서 작업할 때만 사용하고 git revert는 다른 팀원들과 협업을 했을 할 때 사용해야 한다.
[ 이유 ] 다른 팀원들과 협업 중, origin에 올린 코드에 대해 혼자만 commit을 삭제를 하고 또 다시 push를 하게되면 다른 팀원들과 코드가 꼬이게 될 수 있기 때문이다.
그리고 commit history를 관리하는 측면에서도 더 좋다.




1. 기본 사용법

  • 예시 설명) test.txt 파일 작업 중 잘못된 코드를 commit한 것을 취소해보자.

    💡 세 번째 줄의 fail이 잘못된 코드라 가정하자.

    💡 git revert와 함께 되돌리고 싶은 commit의 해쉬 값을 넣어주면 이 커밋 이전의 코드로 돌아간다. test.txt를 확인해보면 되돌아 간 것을 볼 수 있다. (revert 사용 시 커밋 내용을 원하는 내용으로 수정할 수 있다.)









충돌 발생 예시를 위해 다음 명령어를 이용해 1번에서 revert를 하기 전으로 돌려준다.
💻 git reset [되돌리고 싶은 위치의 해쉬 값]








2. 충돌 발생 시 해결법

  • 만약, 이미 잘못된 코드에 대해 commit 후에 동일한 위치에 대해 수정을 하게 되면 git revert를 할 때 confilct가 발생하게 된다.
    => 잘못된 코드(fail)가 작성된 줄에 정상적인(success) 코드가 추가 되었다고 가정하자.

    💡 동일한 위치를 수정 후 git revert를 하면 에러 메시지가 뜬다. 이 에러 메시지는 충돌이 났다는 것을 알려준다. (git status로 충돌난 파일을 알 수 있다.)

    💡 충돌이 발생한 파일을 직접 수정해 주고 다시 파일을 git add 후 git revert --continue를 해주면 revert가 계속 진행된다.

    💡 test.txt 내용을 확인해 주면 잘못된 코드(fail)가 없어진 것을 볼 수 있다.






3. 추가 사용법

[1] revert 결과가 바로 커밋되게 하지 않게 할 때
--no-commit 옵션으로 revert한 결과가 stage 상태만 유지하도록 할 수 있다.

git revert --no-commit [커밋 해쉬값]

[2] 여러 개의 커밋을 되돌릴 때

git revert [커밋 해쉬값]...[커밋 해쉬값]
profile
개발 공부 기록

0개의 댓글