2011-02-11 5 views
3

저는 두 개의 브랜치 1.0과 master가있는 자식 저장소가 있습니다. 1.0에서 작업하려면 다음 명령을 사용하여 복제합니다.체크 아웃되지 않은 브랜치로 git 변경 사항을 가져 오기

git clone ssh://[email protected]/project -b 1.0 project-1.0 

그리고 모두 정상입니다. 나는 git branch 명령을 실행하면 나는 참조 : 다른 사람이 변경 밀어 경우

* 1.0 
    remotes/origin/1.0 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

그러나, 그것은 것 마스터 나는 1.0을 변경하고 밀어 시도 :

1.0 

git branch -a

은 다음과 같습니다 마스터 변경 사항으로 내 Repo를 업데이트해야하기 때문에 실패합니다. 이 I 체크 아웃 마스터 할 변경 사항을 당겨 다음 1.0로 다시 전환하려면

git checkout master 
git pull 
git checkout 1.0 

그러나, 내가 먼저 마스터를 체크 아웃 할 필요없이 최신 변경 사항을 당길 수있는 간단한 방법이있다?

답변

1

git branch -a에 따르면 에는 master이라는 로컬 분기가 없습니다. 따라서 git log master이 작동해서는 안됩니다. 원격 추적 지점, 즉 origin/master은 가져올 때 항상 업데이트됩니다. 따라서 origin 리모컨에서 master 브랜치의 로그를보고 싶다면 git fetch; git log origin/master 만 있으면됩니다. 자신 만의 버전을 갖고 싶지 않으므로 git checkout master은 실수로 작업 과정을 혼란스럽게했을 수도 있습니다. 다른 사람이 변경 밀어 경우

그러나, 마스터 나는 1.0을 변경하고 내가 마스터 변경 내 REPO를 업데이트 할 필요가 있기 때문에 실패합니다 집어 넣으려고 시도합니다.

이것은 사실이 아닙니다. 아무도 1.0에 다른 변화를 밀어 넣지 않는다면, 당신은 그것을 밀어 올릴 수 있습니다. 마스터 지점에는 특별한 것이 없습니다. git branch -d master을 사용할 수 있습니다 (1.0에서 벗어난 경우 origin/master으로 병합되었지만 HEAD가 아니라는 사실을 알려줄 것입니다). 마스터 버전을 유지 관리하는 데 관심이없는 것처럼 보입니다.

다시 마스터로 푸시하면 1.0으로 이동하는 것을 멈추지 않으며 로컬 master을 체크 아웃하면 origin/master을 검사하기 만하면됩니다.

+0

예, 제가 마스터를 체크 아웃했기 때문에 나는 스스로를 힘들게 만들고 있다고 생각합니다. 답변 해주셔서 감사합니다. – Rob

3

git fetch origin을 사용하면 origin 리모컨 아래의 모든 원격 추적 분기가 업데이트됩니다. 이렇게하면 "지사"브랜치는 변경되지 않지만 원격 추적 브랜치에서 1.0 브랜치로 병합 할 수 있습니다.

git pull은 본질적으로 git fetch이고 그 뒤에 git merge이옵니다.

+1

'git fetch origin'을 실행하고'git log'를 사용하여 master의 최근 커밋을 살펴 본다면 새 콘텐츠가 표시되지 않습니다. 대신'git fetch origin master : master'를 실행하면 실제로 분기를 체크 아웃하지 않고 커밋을 볼 수 있습니다. – Rob

3

master가 origin/master로 빨리 감기 될 수있는 경우, I do git push . origin/master:master (예, 점 '.')입니다.

+0

git push? 그건 오타 였나? – Rob

+0

Nope. 오타가 없습니다. 시도 해봐. –

관련 문제