2011-08-21 5 views
3

Linonde를 사용하여 나의 git repos와 실제 사이트 파일을 호스팅하고 있습니다. 다음과 같습니다 -r로컬 및 서버상의 복수 Git 헤드 다루기

자식 분기 :

company/master 
company/stage 
origin/HEAD -> origin/master 
origin/master 
prod/master 

자식 지점은 다음과 같습니다

master 
stage 

가 나는/단지 내 회사에 내 로컬 단계의 분기점이려고 생각 마스터 헤드. 내가 git push company stage 할 때 서버에서 내 무대 머리를 업데이 트하는 것하지만 내 사이트가 파일을 제공하는 것 같습니다 마스터 머리를 업데이 트 얻기 위해 노력하고있어. 또는 사이트를 회사/무대 책임자에게 가리키는 방법을 알아야합니다.

은 내 지점을 삭제하고 내가 시작 포인트는 내가 필요로 무엇 될 줄 알았는데으로

git branch stage company/master 

하나를 만드는 시도했다.

error: failed to push some refs to '[email protected]:~repos/project_name' 
To Prevent you from losing history, non-fasst-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again.) 

가 나는 git pull을 시도했지만 모든 것이 최신했다 내가 해결 빨리 감기 도움말 문서에서 아무것도 볼 수 없었다 : 그 후 밀어하려고 할 때

넣어 나는 메시지가 내 상황.

답변

6

첫째, 당신이 할 때 발생하는 설명 가치 :

git push company stage 

마지막 매개 변수는 소스 심판 및 목적지 심판 사이의 매핑을 정의하는 정말 refspec,이 - 간단한 경우에 따라 이 "refs"는 지점 이름입니다. refspec에 :이 없으면 같은 이름의 분기로 푸시한다고 가정합니다. 그래서, 당신은 실행 한 명령에 해당 : 대신, 당신은 company 저장소에 master 지점을 업데이트하려면

git push company stage:stage 

, 당신은 할 필요가 :

git push company stage:master 

git branch stage company/master 

... 그 이러다 : 당신이 당신의 분기를 삭제하고 그것을 다시 할 때

에 이동 로컬 브랜치 stage과 저장소 company의 브랜치 master을 연결하는 git config 항목을 찾습니다. ¹ 즉, 지점 stage에있는 경우 git pull을 실행하면 옳은 일을해야하며이 경우에는 원격 추적 지점 company/master을 업데이트하고이를 stage에 병합해야합니다.

불행히도 (그리고 혼란스럽게도) 이러한 구성 옵션은 (기본값) 의 동작에 영향을 미치지 않습니다 (어느 쪽이나 wrote about in some detail elsewhere).로컬 stage 지점으로 company 저장소에 master 지점을 업데이트하려면 ...

git push company stage:master 

을 : 당신은 당신이 다음 사용 git push 명령의 형태를 언급하지 않는,하지만 당신은하고있다한다 . (git push company을 시도하면 로컬 저장소와 company 사이의 모든 "일치하는"분기를 푸시합니다. "일치하는"은 "같은 이름의 분기가 로컬 및 원격으로 존재 함"을 의미합니다. trackingpush.default 설정 옵션을 선택합니다.) 자식의 이전 버전


¹ 당신은 --track 매개 변수를 추가해야했습니다,하지만 기본이었다 잠시 동안 시작점은 원격 추적 브랜치입니다.

+0

+1 좋은 답변입니다. 나는 이것을 보았을 때 대답을 게시하는 중반이었다. 나는 네 답을 더 좋아해서 계속해서 귀찮게하지 않았다. :) – Gerry

+0

검색을하고 대체 할 수 있습니다. – Gerry

+1

고마워요, 제리 - 해봤습니다. –