충돌이 있는 Git 병합 되돌리기
이 기사는 병합 충돌이 발생할 때 git merge
명령을 되돌리는 방법을 설명합니다. 또한 성공적으로 원격 저장소로 푸시된 git merge
를 실행 취소하는 방법에 대해서도 간단히 살펴보겠습니다.
충돌이 있는 Git 병합 되돌리기
이 섹션에서는 아래에서 설명하는 예를 사용합니다.
저장소에는 master
및 feature
분기가 있습니다. master
를 feature
에 병합하면 충돌이 발생하도록 두 분기에서 README.md
파일을 편집합니다.
git merge
명령을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
이러한 병합을 실행 취소하려면 아래와 같이 git merge --abort
명령을 실행할 수 있습니다.
$ git merge --abort
이 명령은 리포지토리를 병합 전의 이전 상태로 재설정합니다. 안정적이지는 않지만 커밋되지 않은 변경 사항도 복원해야 합니다.
게다가 커밋되지 않은 변경 사항이 있는 브랜치를 병합하는 것은 초보자뿐입니다.
git reset --merge
명령을 사용할 수도 있습니다. 이 명령은 git merge --abort
명령과 동일하게 작동합니다.
$ git reset --merge
또 다른 편리한 명령은 git reset --hard
입니다. 병합 및 병합에 의해 작업 복사본에 도입된 모든 변경 사항을 제거합니다.
성공적인 병합을 취소하려면 어떻게 해야 합니까?
먼저 병합을 위한 커밋 해시가 필요합니다. 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 --merge
및 git merge --abort
명령은 이러한 시나리오에서 유용합니다.
병합에 성공하고 변경 사항을 원격으로 푸시한 경우 병합에 의해 도입된 변경 사항을 되돌리는 새 커밋을 생성해야 합니다.
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 RM --Cached와 Git 재설정 파일의 차이점
- Git 재설정, 되돌리기 및 체크아웃 명령의 차이점
- 개발 분기를 마스터 분기와 동일하게 만들기
- 로컬 Git 변경 사항을 제거하는 데 사용되는 다양한 방법
- --hard 플래그로 Git 재설정 실행 취소