Git - Your branch and 'origin/xxx' have diverged

2017 단어 git
번역(비직역):git-branches-have-diverged
현재 작업 중인 git 창고 모델은 다음과 같습니다.
upstream
   |
origin
   |
local copy

Git fetch, merge 이후 가름

git fetchupstream 상위 코드를 실행한 후git mergegit statusGit분지에 갈라진 부분rebase 이후에 나타나지 않은 경우)을 발견했다.
프롬프트는 다음과 같은 오류입니다.
Your branch and 'origin/xxx' have diverged,
and have 1 and 1 different commit(s) each, respectively.

갈라진 이유는 두 가지 독립된 제출이 존재하기 때문입니다. 하나는 로컬 지점 복사본에서 제출한 것이고, 다른 하나는 원격 지점 복사본에서 제출한 것입니다.(보통 다른 사람이 상류에서 같은 지점에서 제출했기 때문)
예제 git 제출 기록 트리:

    ... o ---- o ---- A ---- B  origin/branch_xxx (upstream work)
                       \
                        C  branch_xxx (your work)

이때 갈라진 부분을 해결하는 방법은 다음과 같다.
로컬 분기에서 다음을 수행합니다.
git rebase

rebase 이후git 제출 기록 트리는 다음과 같습니다.
    ... o ---- o ---- A ---- B  origin/branch_xxx (upstream work)
                              \
                               C`  branch_xxx (your work)

rebase 이후 같은 오류 알림


리베이스 이후에 같은 오류가 발생할 수 있습니다. 리베이스를 실행하기 전에 오리진 위에push를 제출했기 때문입니다.리베이스는 역사 제출 기록을 다시 쓰기 때문에 로컬과 오리진의 역사 제출 상태가 다르고 갈라집니다.
rebase 이전git 제출 기록 트리:

    ... o ---- o ---- A ---- B  master, origin/master
                       \
                        C  branch_xxx, origin/branch_xxx

rebase 이후git 제출 기록 트리:
    ... o ---- o ---- A ---------------------- B  master, origin/master
                       \                        \
                        C  origin/branch_xxx     C` branch_xxx

이 때, 당신은 위에서 설명한 상황에 처해 있음을 확인해야 합니다. 해결 방안은 당신의origin 상위에 강제로 push를 보내는 것입니다. 다음 명령을 실행하면 해결할 수 있습니다.
git push origin branch_xxx -f

좋은 웹페이지 즐겨찾기