스택큐힙리스트

저는 병합 충돌을 겪었습니다. 병합을 중단하는 방법은 무엇인가요? 본문

카테고리 없음

저는 병합 충돌을 겪었습니다. 병합을 중단하는 방법은 무엇인가요?

스택큐힙리스트 2024. 1. 9. 18:57
반응형

저는 git pull을 사용했고 병합 충돌이 발생했습니다:


unmerged:   some_file.txt
당신은 충돌이 발생한 병합 중입니다.

파일에 대한 변경 내용을 포기하고 가져온 변경 내용만 유지하는 방법은 무엇인가요?

답변 1

당신의 pull이 성공하지 못했기 때문에 HEAD (하지만 HEAD^는 아님)은 브랜치에서 마지막 유효한 커밋입니다:


git reset --hard HEAD

다른 조각은 그들의 변경 사항이 당신의 변경 사항을 무시하도록 하는 것입니다.


git의 이전 버전은 theirs 병합 전략을 사용할 수 있도록 했습니다:


git pull --strategy=theirs remote_branch

하지만 Git 유지 관리자인 준이오 하마노가 설명한 이 메시지에서 언급한대로 이는 제거되었습니다. 링크에서 언급되었듯이, 대신 다음을 수행해야 합니다:


git fetch origin
git reset --hard origin

답변 2

병합 충돌 시 병합을 중단하는 방법
병합 충돌은 개발자들이 코드 작업을 병합할 때 종종 마주치는 문제입니다. 이러한 충돌은 코드 변경 내용이 충돌하거나 상충하는 경우에 발생합니다. 이러한 상황에서는 충돌을 해결하고 코드를 병합해야 합니다. 그러나 때로는 우리가 병합을 진행하는 대신 병합을 중단하고 싶을 수 있습니다. 이러한 상황에서는 어떻게 병합을 중단할 수 있는지 알아보겠습니다.
1. 충돌 해결을 하지 않고 병합 중단:
가장 간단한 방법은 충돌 해결 과정을 거치지 않고 바로 병합을 중단하는 것입니다. 이 방법은 병합 과정에서 발생한 모든 변경 사항을 폐기하고, 이전 상태로 되돌아가려는 경우에 유용합니다. 이를 위해서는 다음과 같은 명령어를 사용합니다:
git merge --abort
이 명령어를 실행하면 경고 메시지를 통해 현재 진행 중인 병합이 중단되고 이전 상태로 돌아감을 확인할 수 있습니다.
2. 커밋 되돌리기:
다른 방법은 이미 병합을 완료하고 커밋을 한 경우에 해당합니다. 병합 후 커밋된 상태에서 병합을 중단하고 싶다면, 이전 커밋을 취소하고 이전 상태로 되돌립니다. 이를 위해서는 다음 명령어를 사용합니다:
git revert HEAD
이 명령어를 실행하면 가장 최근에 한 커밋을 취소하고, 이전 상태로 돌아가게 됩니다. 이후에는 다시 필요한 작업을 수행하거나, 병합을 다시 진행할 수 있습니다.
3. 강제 푸시:
마지막으로, 병합 충돌이 발생한 분기에서 코드를 폐기하고 병합을 중단하고 싶을 때에는 강제 푸시 방식을 사용할 수 있습니다. 이 방법은 주의해야 할 점이 있으며, 코드 내역을 확실하게 이해한 후에만 사용해야 합니다. 다음과 같이 명령어를 사용하여 병합을 강제로 중단할 수 있습니다:
git push -f
이 명령어는 로컬 변경 내용을 원격 저장소로 강제로 푸시하여 코드를 업데이트합니다. 이는 병합된 내용을 모두 폐기하며, 주의해서 사용해야 하는 방법입니다.
결론
병합 충돌은 개발 과정에서 종종 발생하는 문제입니다. 그러나 충돌이 발생했을 때 병합을 중단하고 싶을 때에도 여러 가지 방법을 사용할 수 있습니다. 이 문제를 해결하기 위해서는 충돌의 원인을 파악하고, 코드 기록과 브랜치 상태를 유지하기 위한 작업을 잘 이해해야 합니다. 정확한 방법을 사용하여 충돌을 해결하거나 병합을 중단함으로써, 코드 작업을 원활하게 진행할 수 있습니다.

반응형
Comments