Programing

Git은 로컬 브랜치가 원격 브랜치 뒤에 있다고 말하지만 그렇지 않습니다.

lottogame 2020. 10. 7. 07:10
반응형

Git은 로컬 브랜치가 원격 브랜치 뒤에 있다고 말하지만 그렇지 않습니다.


대본:

  1. 나는 새로운 지점을 만든다
  2. 해킹 해
  3. 커밋
  4. 밀어
  5. 좀 더 해킹
  6. 다시 커밋
  7. 다시 밀려 고

힘내 응답 :

현재 지점의 팁이 원격 지점 뒤에 있기 때문에 업데이트가 거부되었습니다. 기타

이 지점을 해킹하는 유일한 사람은 나뿐입니다. 원격 분기는 실제로 로컬 분기 뒤에 있습니다. 나는 전혀 당길 필요가 없습니다.

(그리고 내가 당기면 Git은 둘 사이의 충돌을보고하고 분기를 자체로 병합하도록 강요합니다)

왜 이런 일이 일어날까요? 어떻게 진단 / 수정할 수 있습니까?

명확하게 말하면, 나는 아무데도 분기 하지 않고 다른 사람 도 작업 하지 않습니다 .

Remote: Commit A -------- Commit B  

Local:  Commit A -------- Commit B -------- Commit C  

C는 B의 연속 된 연속이며 분기가 포함되지 않습니다. 그러나 git은 C가 A의 분기라고 생각합니다.

Remote: Commit A -------- Commit B  

                  ------- Commit C  
                /  
Local:  Commit A -------- Commit B  

그렇지 않습니다. 그것은 B의 연속적인 연속입니다.


역사를 다시 쓰 셨나요? 로컬 지점이 서버의 지점과 분기되었습니다. 이 명령을 실행하여 발생한 상황을 더 잘 이해하십시오.

gitk HEAD @{u}

이 오류의 원인을 이해하려고 노력하는 것이 좋습니다. 이를 수정하려면 다음을 실행하십시오.

git push -f

이는 -f이를 "강제 푸시"로 만들고 서버의 분기를 덮어 씁니다 . 그것은 당신이 팀으로 일할 때 매우 위험합니다. 그러나 당신은 혼자이고 당신의 지역 주가 정확하다는 것을 확신하기 때문에 이것은 괜찮을 것입니다. 그렇지 않은 경우 커밋 기록을 잃을 위험이 있습니다.


이것은 개발 브랜치를 푸시하려고 할 때 발생했습니다 (git flow를 사용하고 있습니다). 누군가 마스터에게 업데이트를 푸시했습니다. 나는 그것을 고치기 위해 :

git co master
git pull

그 변경 사항을 가져 왔습니다. 그때,

git co develop
git pull

아무 짓도 안 했어요. 오류 메시지에도 불구하고 개발 분기가 이미 푸시되었다고 생각합니다. 모든 것이 현재 최신 상태이며 오류가 없습니다.


솔루션은 매우 간단하고 저에게 효과적이었습니다.

이 시도 :

git pull --rebase <url>

그때

git push -u origin master

진단하려면 이 답변을 따르십시오 .

그러나 당신이 그것을 변경하는 유일한 하나 알고, 그것을 해결하기 위해 수행 :
1 - 백업 프로젝트 (내가 한 자식에 파일 만, ./src 폴더)
2 - git pull
3 - (많은 "엉망"파일을 통해 백업을 복원 병합 표시기 포함)

나는 시도 git pull -s recursive -X ours했지만 내가 원하는 방식으로 작동하지 않았습니다. 옵션이 될 수 있지만 먼저 백업하십시오 !!!

차이점 / 변경 사항 (git gui에서)이 없는지 확인하십시오. 이것은 제 경우입니다. 병합 할 것이 전혀 없지만 github는 계속 병합해야한다고 말합니다.

참고URL : https://stackoverflow.com/questions/12650261/git-says-local-branch-is-behind-remote-branch-but-its-not

반응형