Git 병합 취소
이 튜토리얼에서는 Git에서 병합을 취소하는 방법에 대해 알아봅니다.
Git에서 우리는 다른 브랜치의 변경 사항을 현재 브랜치의 HEAD
로 통합하기 위해 한 브랜치를 다른 브랜치와 병합합니다.
때때로 우리는 이 병합을 취소하고 싶을 수 있습니다. Git 명령 git reset
을 사용하여 git 병합을 취소할 수 있습니다.
이제 이를 예를 들어 설명하겠습니다.
git reset
을 사용하여 Git에서 병합 취소
분기 즉, 분기를 병합했다고 가정합니다. feature1
을 main
분기와 함께 사용하여 해당 분기의 변경 사항을 main
분기로 통합합니다.
이제 이 병합을 취소하기로 결정합니다. 이를 위해 git reset
을 사용할 수 있습니다.
먼저 Git의 로그에서 병합 전의 commit sha
를 찾아야 합니다. 이를 위해 git log
명령을 사용할 수 있습니다.
다음과 같이 git log
명령을 실행합니다.
$ git log --oneline
0e25143 Merge branch 'feature1'
23ad9ad Add the initial code base
0e25143
이 feature1
분기에서 main
분기로의 병합의 commit sha
임을 알 수 있습니다. 23ad9ad
는 feature1
분기를 병합하기 전 커밋의 commit sha
입니다.
git reset
명령을 --hard
옵션과 함께 사용하여 main
분기를 병합 전 상태로 재설정합니다.
git reset
명령의 구문은 다음과 같습니다.
git reset --hard commit_sha_before_merge
이제 다음과 같이 git reset
을 실행합니다.
$ git reset --hard 23ad9ad
따라서 현재 브랜치의 HEAD
재설정 즉, 병합을 취소했습니다. main
을 병합하기 전에 커밋합니다.
커밋되지 않은 변경 사항이나 저장되지 않은 변경 사항은 위에 제공된 git reset
명령을 실행한 후 손실됩니다.
특히 마지막 커밋이 병합인 경우 다음과 같이 git reset
명령을 사용할 수도 있습니다.
$ git reset --hard HEAD~1
현재 분기의 HEAD
를 커밋 한 번으로 재설정합니다.
마찬가지로 우리도 다음과 같이 할 수 있습니다.
$ git reset --hard ORIG_HEAD
ORIG_HEAD
는 병합이 일어나기 전의 커밋을 가리킵니다.
더 안전한 옵션은 다음과 같이 git reset
과 함께 --merge
옵션을 사용하는 것입니다.
$ git reset --merge ORIG_HEAD
git reset
명령과 함께 --merge
옵션을 사용하면 인덱스를 재설정하고 커밋과 HEAD
간에 다른 파일을 업데이트합니다. 그러나 인덱스와 작업 트리(즉, 아직 인덱스에 추가되지 않은 변경 사항) 간에 다른 파일의 변경 사항을 유지합니다.
관련 문장 - Git Reset
- Git RM --Cached와 Git 재설정 파일의 차이점
- Git 재설정, 되돌리기 및 체크아웃 명령의 차이점
- 개발 분기를 마스터 분기와 동일하게 만들기
- 로컬 Git 변경 사항을 제거하는 데 사용되는 다양한 방법
- 충돌이 있는 Git 병합 되돌리기
- --hard 플래그로 Git 재설정 실행 취소