병합 충돌은 파일의 동일한 줄을 변경하거나 한 사람이 파일을 편집하고 다른 사용자가 동일한 파일을 삭제할 때 발생합니다. 자세한 내용은 병합 충돌 정보을(를) 참조하세요.
팁
GitHub에서 충돌 편집기를 사용하여 끌어오기 요청의 일부인 분기 간에 경쟁하는 줄 변경 병합 충돌을 해결할 수 있습니다. 자세한 내용은 GitHub 병합 충돌 해결을(를) 참조하세요.
경쟁하는 줄 변경 병합 충돌
상충하는 줄 변경으로 인한 병합 충돌을 해결하려면, 다른 브랜치에서 통합할 변경 내용을 선택하여 새 커밋을 만들어야 합니다.
예를 들어 사용자와 다른 사용자가 동일한 Git 리포지토리의 다른 분기에 있는 동일한 줄에서 styleguide.md 파일을 편집한 경우 이러한 분기를 병합하려고 할 때 병합 충돌 오류가 발생합니다. 이러한 분기를 병합하려면 먼저 이 병합 충돌을 새 커밋으로 해결해야 합니다.
데이터 재사용 가능 명령 줄.멀티 OS 터미널을 여세요 %}
-
병합 충돌이 있는 로컬 Git 리포지토리로 이동합니다.
cd REPOSITORY-NAME -
병합 충돌의 영향을 받는 파일 목록을 생성합니다. 이 예제에서 styleguide.md 파일에 병합 충돌이 있습니다.
$ git status > # On branch branch-b > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add <file>..." to mark resolution) > # > # both modified: styleguide.md > # > no changes added to commit (use "git add" and/or "git commit -a") -
[Visual Studio Code](https://code.visualstudio.com/)과(와) 같이 즐겨 사용하는 텍스트 편집기를 열고 병합 충돌이 있는 파일로 이동합니다. -
파일에서 병합 충돌의 시작을 보려면 충돌 표식
<<<<<<<에 대해 파일을 검색하세요. 텍스트 편집기에서 파일을 열면<<<<<<< HEAD줄 뒤에 헤드 또는 베이스 분기의 변경 내용이 표시됩니다. 다음으로 변경 내용을 다른 분기의 변경 내용과 구분하는=======이 표시되고 그 뒤에>>>>>>> BRANCH-NAME이 표시됩니다. 이 예제에서 한 사람은 베이스 또는 헤드 분기에 “문제 열기”라고 썼고 다른 사람은 비교 분기 또는branch-a에 “IRC에 질문하기”를 썼습니다.If you have questions, please <<<<<<< HEAD open an issue ======= ask your question in IRC. >>>>>>> branch-a -
분기의 변경 내용만 유지하거나, 다른 분기의 변경 내용만 유지하거나, 두 분기의 변경 내용을 통합할 수 있는 완전히 새로운 변경을 수행할지 결정합니다. 충돌 표식
<<<<<<<,=======,>>>>>>>를 삭제하고 최종 병합에서 원하는 대로 변경합니다. 이 예제에서 두 변경 내용 모두 최종 병합에 통합됩니다.If you have questions, please open an issue or ask in our IRC channel if it's more urgent. -
변경 내용을 추가하거나 임시 저장합니다.
git add . -
주석을 사용하여 변경 내용을 커밋합니다.
git commit -m "Resolve merge conflict by incorporating both suggestions"
이제 명령줄에서 분기를 병합하거나 GitHub에서 원격 리포지토리에 변경 내용을 푸시하고 끌어오기 요청에 변경 내용을 병합할 수 있습니다.
파일 병합 충돌 제거됨
한 분기에서 파일을 삭제하고 다른 사용자가 동일한 파일을 편집하는 파일의 경쟁하는 변경으로 인해 발생하는 병합 충돌을 해결하려면 제거된 파일을 새 커밋에서 삭제할지 또는 유지할지를 선택해야 합니다.
예를 들어 README.md와 같은 파일을 편집하고 다른 사용자가 동일한 Git 리포지토리의 다른 분기에서 동일한 파일을 제거한 경우 이러한 분기를 병합하려고 할 때 병합 충돌 오류가 발생합니다. 이러한 분기를 병합하려면 먼저 이 병합 충돌을 새 커밋으로 해결해야 합니다.
데이터 재사용 가능 명령 줄.멀티 OS 터미널을 여세요 %}
-
병합 충돌이 있는 로컬 Git 리포지토리로 이동합니다.
cd REPOSITORY-NAME -
병합 충돌의 영향을 받는 파일 목록을 생성합니다. 이 예제에서
README.md파일에 병합 충돌이 있습니다.$ git status > # On branch main > # Your branch and 'origin/main' have diverged, > # and have 1 and 2 different commits each, respectively. > # (use "git pull" to merge the remote branch into yours) > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add/rm <file>..." as appropriate to mark resolution) > # > # deleted by us: README.md > # > # no changes added to commit (use "git add" and/or "git commit -a") -
[Visual Studio Code](https://code.visualstudio.com/)과(와) 같이 즐겨 사용하는 텍스트 편집기를 열고 병합 충돌이 있는 파일로 이동합니다. -
제거된 파일을 유지할지 결정합니다. 텍스트 편집기에서 제거된 파일에 대한 최신 변경 내용을 볼 수 있습니다.
제거된 파일을 리포지토리에 다시 추가하려면 다음을 수행합니다.
git add README.md리포지토리에서 이 파일을 제거하려면 다음을 수행합니다.
$ git rm README.md > README.md: needs merge > rm 'README.md' -
주석을 사용하여 변경 내용을 커밋합니다.
$ git commit -m "Resolve merge conflict by keeping README.md file" > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
이제 명령줄에서 분기를 병합하거나 GitHub에서 원격 리포지토리에 변경 내용을 푸시하고 끌어오기 요청에 변경 내용을 병합할 수 있습니다.
추가 참고 자료
-
[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts) -
[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally)