Git 병합 취소

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 간에 다른 파일을 업데이트합니다. 그러나 인덱스와 작업 트리(즉, 아직 인덱스에 추가되지 않은 변경 사항) 간에 다른 파일의 변경 사항을 유지합니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다

관련 문장 - Git Reset

관련 문장 - Git Merge