Git 병합 취소

Azhar Bashir Khan 2022년8월23일
Git 병합 취소

이 튜토리얼에서는 Git에서 병합을 취소하는 방법에 대해 알아봅니다.

Git에서 우리는 다른 브랜치의 변경 사항을 현재 브랜치의 HEAD로 통합하기 위해 한 브랜치를 다른 브랜치와 병합합니다.

때때로 우리는 이 병합을 취소하고 싶을 수 있습니다. Git 명령 git reset을 사용하여 git 병합을 취소할 수 있습니다.

이제 이를 예를 들어 설명하겠습니다.

git reset을 사용하여 Git에서 병합 취소

분기 즉, 분기를 병합했다고 가정합니다. feature1main 분기와 함께 사용하여 해당 분기의 변경 사항을 main 분기로 통합합니다.

이제 이 병합을 취소하기로 결정합니다. 이를 위해 git reset을 사용할 수 있습니다.

먼저 Git의 로그에서 병합 전의 commit sha를 찾아야 합니다. 이를 위해 git log 명령을 사용할 수 있습니다.

다음과 같이 git log 명령을 실행합니다.

$ git log --oneline
0e25143 Merge branch 'feature1'
23ad9ad Add the initial code base

0e25143feature1 분기에서 main 분기로의 병합의 commit sha임을 알 수 있습니다. 23ad9adfeature1 분기를 병합하기 전 커밋의 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 Merge