Git 변경 취소 | git revert

git revert 명령

git revert 는 커밋 된 스냅 샷을 취소 명령이다. 다만 프로젝트 이력에서 커밋이 없었던 것으로 하는 것이 아니라 그 커밋에 의해 변경된 내용을 취소하는 방법을 찾아내고 그 결과를 새로운 커밋으로 추가하는 것이다. 이것은 Git의 패키지 이력를 보전하기 위한 것이며, 패키지 이력의 완전성 유지와 협력의 신뢰성 확보를 위한 것이다.

Git 튜토리얼 : git revert

사용법

git revert <commit>

<commit>에서 변경한 모든 변경 사항을 되돌려 새로운 커밋으로 생성하고, 그것을 현재 브랜치에 적용하는 명령이다.

보충 설명

「취소」는 그 커밋을 프로젝트 기록에서 완전히 제거 할 때 사용한다. 이것은 버그를 추적한 결과 어떤 하나의 커밋이 원인인 것으로 판명된 경우 등에 유용한 명령이다. git revert 를 사용하여 수동으로 분석하고 수정하고 그 결과를 새로운 스냅 샷으로 커밋하는 것이 아니라, 그 것을 모두를 자동으로 할 수 있다.

부정 및 취소

git revert는 하나의 커밋만 원래대로 돌리는 명령(부정)이며, 그 커밋 후에 만들어진 모든 커밋을 취소하고 이전의 상태로 돌아가는 명령(취소)이 아님을 확실히 이해하자. Git은 후자 reset 명령이며, revert 명령이 아니다.

Git 튜토리얼 : 부정 및 취소

부정는 취소와 비교하여 두 가지 중요한 이점이 있다. 첫째는 프로젝트 이역 변경이 이루어지지 않기 때문에 이미 공개 저장소에 공개된 커밋에 대해 “안전한"작업이다. 공개된 변경 이력을 변경하는 행위의 위험은 git reset 페이지를 참조해 주길 바란다.

둘째는 git reset 은 현재 커밋을 되돌리는 기능을 뿐이다. 반면 git revert 는 이력에 대해 언제든지 각각의 커밋을 대상으로 할 수 있다는 점이다. 예를 들어, git reset 명령을 사용하여 과거 하나의 커밋만 원래대로 되돌리려고 하면 해당 커밋 이후에 만들어진 모든 커밋과 해당되는 커밋을 삭제하고, 해당 커밋 이후에 만들어진 모든 커밋을 다시 커밋해야 한다. 분명히 이것은 취소 효율적인 방법은 아니다.

사용 예

git revert 명령의 간단한 사용 예를 보여준다. 여기에 있는 스냅 샷을 커밋을 한 이후 바로 취소를 하고 있다.

# Edit some tracked files

# Commit a snapshot
git commit -m "Make some changes that will be undone"

# Revert the commit we just created
git revert HEAD

이것을 그림으로 설명하면 다음과 같다 :

Git 튜토리얼 : git revert의 사용 예

여기에서 4 번째 커밋은 취소 작업 후에도 프로젝트 기록에 남아있는 점에 유의하십시오. git revert 명령은 변경을 취소하기 위하여 그것을 삭제하는 것이 아니라 새로운 커밋을 추가합니다. 그 결과로 3 번째와 5 번째의 커밋 후의 저장소는 완전히 동일한 상태가되고, 게다가 4 번째 커밋은 기록에 남아 있기 때문에 그때로 돌아갈 수 있다.




최종 수정 : 2021-08-26