Git & Github

[Git] 명령어 reset과 revert의 차이

굠민 2024. 9. 2. 20:45
개요

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는 배우는 과정에서는 자제하며 사용해야 할 것 같다고 생각한다.