2013-06-06 4 views
0

몇 주 전에 나는 git으로 작업하기 시작했고, 그 일을 좋아합니다.하나의 가지를 밀고; 다른 사람에 대한 거부감

하지만 내가 왜 git push을 만들 때 거부감을 계속 지니고 있는지 궁금합니다 (푸시가 작동하더라도 오류가 발생 함).

내가 설정 한 다음 한 :

master 
\_ development 
    \_ feature/blog* 

가 지금은 기능/I 개발에서 작성된 블로그에 일하고 있어요. 나는 git push을 할 때 나는 다음과 같은 오류 메시지가 얻을 :

$ git push 
[...] 
To [...]@[...]:[...] 
    288274e..34c17c3 feature/blogs -> feature/blogs 
! [rejected]  development -> development (non-fast-forward) 
error: failed to push some refs to '[...]@[...]:[...]' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

내가 할 경우에도 git pull 작동하지 것이다. Already up-to-date. 메시지도 수신합니다.

어떻게 오류를 예방할 수 있습니까? 현재 체크 아웃 된 지점 만 푸시하고 싶습니다.

답변

3

일반적으로 git에게 어디에 밀어 넣을 지 알려줄 필요가 있습니다. 예를 들어

당신이 할 수있는 말 :이 원점에 기능/블로그 현재 HEAD를 밀어 것입니다

git push origin HEAD:feature/blogs 

.

그런 다음 몇 shorthands이 있습니다 :

git push origin feature/blogs 

이 로컬 지점 "기능/블로그"에 대한 모양과 이름이 같은 지점으로 원점 밀어 것입니다. 당신은 단순히

git push 

을 말한다면

어디 밀어을 지정하지 않습니다. 그러므로 자식은 여러분이 의미하는 것을 "추측"해야합니다. - 귀하의 경우에는 모든 지사를 동일한 이름의 지사로 푸시했습니다.

이 경우에는 push.default을 설정하여 어떤 작업을 수행할지 지정할 수 있습니다. 예를 들면 다음과 같습니다.

은 현재 분기 만 같은 이름의 분기로 푸시하도록합니다.

git help config을보고 다른 옵션에 대해서는 push.default를 찾으십시오.

최신 자식 버전의 기본값은 push.default=simple이며, 일반적으로 더 나은 의견을 제공합니다.

+0

감사! 그것은 인생을 더욱 아름답게합니다! :디 – lumio

0

git push을 할 때 git은 리모컨이있는 모든 가지를 푸시하려고합니다. 그래서 당신은 성공적으로 feature/blogs을 밀었습니다. development이 (가) 해당 리모컨을 사용 중이므로 실패했습니다. git checkout developmentgit pull을 입력하면 해당 분기에 대한 업데이트가 제공됩니다.

git push origin feature/blogs은 하나의 분기 만 푸시해야합니다.

feature/blogs을 누르려고하기 때문에이 메시지는 걱정할 사항이 아닙니다. 푸시하지 못한 지점이 feature/blogs

인 경우를 제외하고는이 기능이 최신 버전의 git에서 변경 될 것으로 생각됩니다. 그 안에서 git push는 당신이 그들 모두보다는 오히려에있는 지점을 밀어 것입니다.

관련 문제