개요
Git의 'reset'과 'revert'는 커밋 기록을 수정하거나 되돌릴 때 사용하는 대표적인 명령어로, 초반에 개념을 확실하게 정리해야 할 중요한 내용인 것 같아 정리 글을 작성해 본다.
개념
📌'git reset'
로컬 커밋 기록을 이전 상태로 되돌리는 명령어로, 실수로 잘못된 커밋을 만들었을 때 사용한다.
특정 커밋 이후의 모든 기록을 삭제하거나 수정할 수 있기에, 협업 프로젝트에서는 신중하게 사용해야 한다.
📌'git revert'
이미 존재하는 커밋을 되돌리는 명령어로, 새로운 커밋을 생성하여 변경사항을 되돌린다.
다른 사람의 작업에 영향을 미치지 않고 커밋을 취소할 수 있기에, 협업 환경에서 안전하게 사용할 수 있다.
세부 사항
< git reset 옵션 >
- --soft
: 작업 디렉토리는 유지되고 변경사항은 스테이징 영역에 남아있다.. - --mixed
: 작업 디렉토리는 유지되고, 파일 변경사항은 남아있지만 스테이징은 해제된다. - --hard
: 스테이징 영역과 작업 디렉토리 모두 초기화한다.
: 모든 변경사항 삭제
< git revert >
: 취소하고 싶은 커밋의 반대되는 변경사항을 담은 새로운 커밋을 만든다.
- 단일 커밋을 취소하는 데 사용되며, 연속된 여러 커밋을 되돌리고 싶다면 여러 번의 revert를 사용하거나 다른 방법을 이용해야 한다.
사용 예시
// reset 예시
git reset --soft HEAD~1 //커밋을 취소하고 수정한 파일은 유지
git reset --mixed HEAD~1 //커밋을 취소하고 스테이징을 해제
git reset --hard HEAD~1 //커밋과 함께 수정한 파일도 삭제
// revert 예시
git revert <커밋 해시>
결론
각각의 목적과 상황에 맞게 사용해야 하지만, 백업파일 없는 되돌리기는 신중해야 하기에 reset는 배우는 과정에서는 자제하며 사용해야 할 것 같다고 생각한다.