2016-08-01 4 views
0

가끔 언젠가 코드를 적용하거나 밀어 넣은 다음 어딘가에 작은 오류가 있음을 알게됩니다. 그래서 새로운 변화 '커밋 마지막 수정'내가 밀어하려고 할 때 이런 일이 발생 :마지막 원격 커밋을 수정하고 싶다면 git 병합이 필요한 이유는 무엇입니까?

내가 밀어하지 않은 경우 마지막 이미 마지막 커밋 밀어 경우, 모든

잘 작동 커밋 나는 그래서

$ git pull origin 
Merge made by the 'recursive' strategy. 

을 받고 병합

$ git push origin 
To https://github.com/Kyklos-Italy/GitFashion.git 
! [rejected]  develop -> develop (non-fast-forward) 
error: failed to push some refs to 'https://github.com/Kyklos-Italy/GitFashion.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Integrate the remote changes (e.g. 
hint: 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

을 얻을 후 나는 밀어 허용하고 있습니다.

왜 그런 행동이 있습니까?

답변

1

수정 중은 완전히 새로운 커밋을 생성합니다. 즉, 로컬에서 생성 된 지점을 원격 변경 사항과 병합해야합니다.

A---B---C 

당신이 C 원본 및 D 당신의 개정이다가 나중에 같이 표시됩니다 이러한 변경, 수정하면 커밋 :

A---B---D 
    \ 
     C 
예를 들어

당신은 어떤 커밋이

다른 분기가 C 인 경우 더 이상 표시되지 않으며 변경 사항이없는 것 같지만 편집 이온 (이미 푸시 된 경우 원격 지점은 여전히 ​​C을 가리켜 야합니다. origin/master). 새로운 지점이 있으므로 지금을 병합해야합니다.

아마도 --force 옵션을 사용하여 병합을 피할 수 있습니다. 필요한 권한이 있다고 가정 할 때 :

git push origin master --force 
관련 문제