충돌이 있는 Git 병합 되돌리기

John Wachira 2024년2월15일
충돌이 있는 Git 병합 되돌리기

이 기사는 병합 충돌이 발생할 때 git merge 명령을 되돌리는 방법을 설명합니다. 또한 성공적으로 원격 저장소로 푸시된 git merge를 실행 취소하는 방법에 대해서도 간단히 살펴보겠습니다.

충돌이 있는 Git 병합 되돌리기

이 섹션에서는 아래에서 설명하는 예를 사용합니다.

저장소에는 masterfeature 분기가 있습니다. masterfeature에 병합하면 충돌이 발생하도록 두 분기에서 README.md 파일을 편집합니다.

git merge 명령을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

git merge

이러한 병합을 실행 취소하려면 아래와 같이 git merge --abort 명령을 실행할 수 있습니다.

$ git merge --abort

이 명령은 리포지토리를 병합 전의 이전 상태로 재설정합니다. 안정적이지는 않지만 커밋되지 않은 변경 사항도 복원해야 합니다.

게다가 커밋되지 않은 변경 사항이 있는 브랜치를 병합하는 것은 초보자뿐입니다.

git reset --merge 명령을 사용할 수도 있습니다. 이 명령은 git merge --abort 명령과 동일하게 작동합니다.

$ git reset --merge

또 다른 편리한 명령은 git reset --hard입니다. 병합 및 병합에 의해 작업 복사본에 도입된 모든 변경 사항을 제거합니다.

성공적인 병합을 취소하려면 어떻게 해야 합니까?

먼저 병합을 위한 커밋 해시가 필요합니다. git log --oneline 명령을 실행하여 리포지토리의 커밋을 나열할 수 있습니다.

그런 다음 아래와 같이 병합 커밋의 해시를 복사합니다.

git log –oneline

병합 커밋 후에 커밋의 해시와 함께 git reset 명령을 사용합니다. 간단히 말해서 커밋은 HEAD@{1}에 있습니다.

$ git reset --hard c315395
HEAD is now at c315395 Trial2

또는 아래와 같이 git reset 명령을 실행할 수 있습니다.

$ git reset --hard HEAD~1

이것은 하나의 커밋으로 저장소를 롤백합니다.

병합을 원격 리포지토리로 푸시한 시나리오에서 동일한 것을 되돌리는 방법은 무엇입니까?

변경 사항을 이미 푸시한 경우 아래와 같이 병합 변경 사항을 되돌리고 원격 리포지토리로 푸시하는 커밋을 생성해야 합니다.

$ git revert -m 1 08396d4

이렇게 하면 병합에 의해 도입된 변경 사항이 되돌려집니다. 병합 커밋의 커밋 해시와 함께 git revert 명령을 사용했습니다.

이제 변경 사항을 원격으로 푸시하여 병합을 되돌릴 수 있습니다.

간단히 말해서 Git을 사용하면 충돌이 발생할 때 병합을 취소할 수 있습니다. git reset --mergegit merge --abort 명령은 이러한 시나리오에서 유용합니다.

병합에 성공하고 변경 사항을 원격으로 푸시한 경우 병합에 의해 도입된 변경 사항을 되돌리는 새 커밋을 생성해야 합니다.

작가: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - Git Reset

관련 문장 - Git Merge