2013-03-15 3 views
18

나는 여전히 초보자이다. 일부 소스 파일을 수정하고 커밋했습니다. 그런 다음 git push을 작성했습니다. 그러나 나는이 오류를 가지고있다. 이 거부git : 왜 "Merge branch 'master ...'...? 당기고 밀 때

To /foo/bar/ ! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '/foo/bar/' To prevent you from 
losing history, non-fast-forward updates were rejected Merge the 
remote changes before pushing again. See the 'Note about 
fast-forwards' section of 'git push --help' for details. 

내가 push 전에하지 git pull했던 것 같다. 그래서 나는 git pull을했습니다. 다른 사람들이 수정 한 두 개의 파일이 있습니다.

그런 다음 성공적으로 git push 수있었습니다.

질문 :

commit 59e04ce13b8afa... 
Merge: 64240ba 76008a5 
Author: Jone Doe <[email protected]> 
Date: Fri Mar 15 11:08:55 2013 -0700 

    Merge branch 'master' of /foo/bar/ 

을 그리고 이것은 내 원래 커밋 메시지입니다 :이 경우, 나는 내 원래 커밋 메시지와 함께 다음과 같이 하나 이상의 로그를보고 있어요.

commit 64240bafb07705c... 
Author: Jone Doe <[email protected]> 
Date: Fri Mar 15 11:06:18 2013 -0700 

    Fixed bugs and updated! 

왜 "병합 지점 마스터"가 추가되었는지 알고 싶습니다.

+0

[Git pull]은 중복 된 "Merge branch" 메시지를 커밋 로그] (http://stackoverflow.com/questions/8509396/git-pull-results-in-extraneous-merge-branch-messages-in-commit-log), 훨씬 더 상세한 답변을 –

답변

14

git-pull을 만들었 으면 원격 지점의 수정 사항이 로컬 지점에 병합되었습니다. 자동으로 생성 된 커밋은이를 나타냅니다.

병합으로 인해 충돌이 발생했을 수 있으므로 수동으로 해결해야합니다. 귀하의 특별한 경우, 이것은 발생하지 않았고 자식은 모든 것을 처리 할 수있었습니다. 다음 git push, 다른 사람에 의해 변경이있을 수 있다면

+0

Is 그러한 추가 커밋을 피할 수있는 방법이 있습니까? 예를 들어, 현재 커밋에서 병합 수정을 포함시킴으로써 (* 수정 된 버그와 위의 *!)? 그것은 일종의 로그 기록을 오염시키기 때문입니다. – Kalvn

+3

Git은 원격 브랜치가 로컬 브랜치보다 앞선 경우, 즉 원격 브랜치가 로컬 브랜치의 커밋 중 일부 커밋을 가지고있는 경우 빨리 감기 병합을 시도합니다. 이 경우 추가 커밋이 없습니다. 추가 커밋은 두 분기의 기록이 다른 경우에만 나타납니다. 이 경우'git rebase' 또는'git pull --rebase'를 사용하여 로컬 브랜치의 커밋 히스토리를 재 작성하여 빨리 감기 병합을 수행 할 수 있습니다. Rebasing은 자체적 인 단점을 가지고 있으며 추가 병합 커밋은 항상 나쁜 것은 아닙니다. 단지 개발 과정을 기록하고있는 것입니다. –

+0

설명 주셔서 감사합니다 :) – Kalvn

7

, git pull --rebase (이 충돌을 찾을 수 있습니다 당신이 해결해야 할 것 즉, 새로운 변화 원격 변경 후 추가) 할 수있는 좋은 생각이 될 수도 있습니다 결과. 조심해라. 이것은 이전에 존재하지 않았던 새로운 커밋을 생성하지만 (역사적인 재 작성과 마찬가지로), 깨끗하고 선형적인 역사를 제공한다. (병합의 얽힘이 없다.)

관련 문제