Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.

이 버전의 GitHub Enterprise는 다음 날짜에 중단되었습니다. 2023-03-15. 중요한 보안 문제에 대해서도 패치 릴리스가 이루어지지 않습니다. 성능 향상, 향상된 보안, 새로운 기능을 위해 최신 버전의 GitHub Enterprise로 업그레이드합니다. 업그레이드에 대한 도움말은 GitHub Enterprise 지원에 문의하세요.

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

명령줄 및 텍스트 편집기를 사용하여 병합 충돌을 해결할 수 있습니다.

병합 충돌은 파일의 동일한 줄을 변경하거나 한 사람이 파일을 편집하고 다른 사용자가 동일한 파일을 삭제할 때 발생합니다. 자세한 내용은 "병합 충돌 정보"을 참조하세요.

팁: GitHub Enterprise Server에서 충돌 편집기를 사용하여 끌어오기 요청의 일부인 분기 간에 경쟁하는 줄 변경 병합 충돌을 해결할 수 있습니다. 자세한 내용은 "GitHub에서 병합 충돌 해결"을 참조하세요.

경쟁하는 줄 변경 병합 충돌

경쟁하는 줄 변경으로 인한 병합 충돌을 해결하려면 새 커밋의 다른 분기에서 통합할 변경 내용을 선택해야 합니다.

예를 들어 사용자와 다른 사용자가 동일한 Git 리포지토리의 다른 분기에 있는 동일한 줄에서 styleguide.md 파일을 편집한 경우 이러한 분기를 병합하려고 할 때 병합 충돌 오류가 발생합니다. 이러한 분기를 병합하려면 먼저 이 병합 충돌을 새 커밋으로 해결해야 합니다.

  1. Terminal(터미널)Terminal(터미널)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 ..." to mark resolution)
    > #
    > # both modified:      styleguide.md
    > #
    > no changes added to commit (use "git add" and/or "git commit -a")
  4. Visual Studio Code과 같이 즐겨 찾는 텍스트 편집기를 열고 병합 충돌이 있는 파일로 이동합니다.

  5. 파일에서 병합 충돌의 시작을 보려면 충돌 표식 <<<<<<<에 대해 파일을 검색하세요. 텍스트 편집기에서 파일을 열면 <<<<<<< HEAD 줄 뒤에 헤드 또는 베이스 분기의 변경 내용이 표시됩니다. 다음으로 변경 내용을 다른 분기의 변경 내용과 구분하는 =======이 표시되고 그 뒤에 >>>>>>> BRANCH-NAME이 표시됩니다. 이 예제에서 한 사람은 베이스 또는 헤드 분기에 “문제 열기”라고 썼고 다른 사람은 비교 분기 또는 branch-a에 “IRC에 질문하기”를 썼습니다.

    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 "Resolved merge conflict by incorporating both suggestions."

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

파일 병합 충돌 제거됨

한 분기에서 파일을 삭제하고 다른 사용자가 동일한 파일을 편집하는 파일의 경쟁하는 변경으로 인해 발생하는 병합 충돌을 해결하려면 제거된 파일을 새 커밋에서 삭제할지 또는 유지할지를 선택해야 합니다.

예를 들어 README.md와 같은 파일을 편집하고 다른 사용자가 동일한 Git 리포지토리의 다른 분기에서 동일한 파일을 제거한 경우 이러한 분기를 병합하려고 할 때 병합 충돌 오류가 발생합니다. 이러한 분기를 병합하려면 먼저 이 병합 충돌을 새 커밋으로 해결해야 합니다.

  1. Terminal(터미널)Terminal(터미널)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 ..." as appropriate to mark resolution)
    > #
    > #  deleted by us:   README.md
    > #
    > # no changes added to commit (use "git add" and/or "git commit -a")
  4. Visual Studio Code과 같이 즐겨 찾는 텍스트 편집기를 열고 병합 충돌이 있는 파일로 이동합니다.

  5. 제거된 파일을 유지할지 여부를 결정합니다. 텍스트 편집기에서 제거된 파일에 대한 최신 변경 내용을 볼 수 있습니다.

    제거된 파일을 리포지토리에 다시 추가하려면 다음을 수행합니다.

    $ git add README.md

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

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

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

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

추가 참고 자료