Skip to main content

명령줄을 사용하여 병합 충돌 해결

충돌하는 변경 내용을 식별하고, 파일을 편집하고, 해결을 커밋하여 명령줄을 사용하여 병합 충돌을 해결합니다.

병합 충돌은 파일의 동일한 줄에 대한 경쟁 변경이 수행되거나 한 사람이 파일을 편집하고 다른 사용자가 동일한 파일을 삭제할 때 발생합니다. 병합 충돌을(를) 참조하세요.

충돌 편집 GitHub 기를 사용하여 끌어오기 요청의 일부인 분기 간의 줄 변경 병합 충돌을 해결할 수 있습니다. GitHub 병합 충돌 해결을(를) 참조하세요.

상충하는 라인 변경 병합 충돌

경쟁 변경 내용이 동일한 줄에 영향을 줄 때 유지할 변경 내용을 선택한 다음 해결 방법을 커밋합니다.

  1. 터미널 또는 Git Bash를 엽니다.

  2. 병합 충돌이 있는 로컬 Git 리포지토리로 이동합니다.

    cd REPOSITORY-NAME
    
  3. 병합 충돌의 영향을 받는 파일을 나열합니다. 이 예제에서 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")
    
  4. 원하는 텍스트 편집기(예: <a0 />)를 열고 병합 충돌이 있는 파일로 이동합니다.

  5. 파일에서 충돌 표 <<<<<<<식을 검색합니다. HEAD 또는 기본 분기의 변경 내용이 뒤에 <<<<<<< HEAD나타나고 그 다음에 =======다른 분기의 변경 내용이 >>>>>>> BRANCH-NAME표시됩니다.

    If you have questions, please
    <<<<<<< HEAD
    open an issue
    =======
    ask your question in IRC.
    >>>>>>> branch-a
    
  6. 분기의 변경 내용만 유지하거나, 다른 분기의 변경 내용만 유지하거나, 두 분기의 변경 내용을 통합할 수 있는 완전히 새로운 변경을 수행할지 결정합니다. 충돌 표식 <<<<<<<, =======, >>>>>>>를 삭제하고 최종 병합에서 원하는 대로 변경합니다. 예를 들어 두 변경 내용을 모두 유지할 수 있습니다.

    If you have questions, please open an issue or ask in our IRC channel if it's more urgent.
    
  7. 변경 내용을 준비합니다.

    git add .
    
  8. 주석을 사용하여 변경 내용을 커밋합니다.

    git commit -m "Resolve merge conflict by incorporating both suggestions"
    

이제 명령줄에서 분기를 병합하거나 원격 리포지토리에GitHub 변경 내용을 푸시하고 끌어오기 요청에서 변경 내용을 병합할 수 있습니다 .

파일 병합 충돌 제거됨

한 분기가 파일을 삭제하고 다른 분기가 동일한 파일을 편집하는 경우 파일을 유지할지 삭제할지 여부를 선택한 다음 해결 방법을 커밋합니다.

  1. 터미널 또는 Git Bash를 엽니다.

  2. 병합 충돌이 있는 로컬 Git 리포지토리로 이동합니다.

    cd REPOSITORY-NAME
    
  3. 병합 충돌의 영향을 받는 파일을 나열합니다. 이 예제에서 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")
    
  4. 원하는 텍스트 편집기(예: <a0 />)를 열고 병합 충돌이 있는 파일로 이동합니다.

  5. 제거된 파일을 유지할지 여부를 결정합니다. 리포지토리에 다시 추가하려면 다음을 수행합니다.

    git add README.md
    

    리포지토리에서 이 파일을 제거하려면 다음을 수행합니다.

    $ git rm README.md
    > README.md: needs merge
    > rm 'README.md'
    
  6. 주석을 사용하여 변경 내용을 커밋합니다.

    $ git commit -m "Resolve merge conflict by keeping README.md file"
    > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
    

병합 충돌이 해결되면 이제 원격 리포지토리에 GitHub 변경 내용을 푸시하거나 끌어오기 요청을 기본 분기에 병합할 수 있습니다.

추가 읽기