git의 reset과 revert

riassuc·2021년 5월 28일
0

python django를 공부하면서 프로젝트를 만들고, 깃을 사용해보고, mysql db랑 연결도 해보고 이것저것 실습을 했다. 두 개의 앱을 서로 다른 브랜치에서 작업했는데 정신없이 하다 보니 a앱을 b브랜치에서 작업하고 말았다. 결국 깃 커밋들이 꼬여서 각 브랜치에 있어야 할 내용들이 여기저기 생기게 됐다. 이미 꼬여 버린 내 깃은 살려내지 못했지만 다음엔 그렇게 하지 않기 위해서 방법을 찾다가 git의 reset과 revert를 찾아보게 되었다

reset

git reset 해쉬
#커밋 이력 삭제, 작업 이력 unstaged

위의 git reset 해쉬는 해쉬에 해당하는 커밋의 위치로 reset된다.
그리고 git reset HEAD^숫자는 숫자만큼 이전 커밋의 위치로 reset된다.

주의할 점은 여러 커밋을 reset하면 작업변경이력이 모두 합쳐진 채로 staged 혹은 unstaged영역에 남는다.

git reset --soft 해쉬
#커밋 이력 삭제, 작업 이력 staged
git reset --hard 해쉬
#커밋 이력 삭제, 작업 이력 삭제

revert

revert는 reset과 달리 커밋 이력을 삭제 하지 않고,
과거의 커밋으로 발생한 변경내용을 취소하는 커밋을 새로 생성한다.

git revert 직전해쉬
#직전 커밋을 취소하는 내용이 작업 이력에 남음, 커밋을 해야함
git revert -n 직전해쉬
#직전 커밋을 취소하는 내용이 바로 커밋 됌

마무리

깃에 reset, revert를 알아보면서 참 유용하다는 생각이 들었다. 깃을 사용하는게 보통 그냥 문서작업등을 하면서 백업을 잘 해두는 것과 크게 다른 일은 아닌데 아무래도 터미널에서 커맨드로만 사용하고 깃허브와 연동되는것 때문에 조금 헷갈린다. 앞으로도 커밋을 조심히 잘 해야겠지만 reset과 revert를 잘 알게 되었으니 문제가 생겨도 잘 되돌릴 수 있을것 같다.


profile
riassuc

0개의 댓글