2014-02-10 61 views
2

早安,通過搜索,但沒有找到,因此在這裏問。 :)使用混帳和遙控器

我有類似下面的情況:origin指向在github上一個項目 ,fork1即指着我的叉子在GitHub和fork2 被指向隊友的叉。

因此,如果我做

$ git checkout master 
# perform various stuff 
$ git push 

所有更改會去origin/master(到目前爲止好)。

現在我想要fork1 master並更新它。我做

$ git checkout master 
$ git pull 
$ git checkout -b fork1-master fork1/master 
$ git merge 
$ git push 

我的印象是,它應該推動當前更改 fork1/master下。相反,它正在創建一個新分支:fork1/fork1-master

我發現在與fork1合併的唯一方法/主是做

$ git checkout master 
$ git pull 
$ git checkout -b fork1-master fork1/master 
$ git merge 
$ git push fork1 fork1-master:master 

它是預期的行爲還是我做錯了什麼?

謝謝
達維德

回答

0

當你

git checkout -b fork1-master fork1/master 

創建fork1-master支路跟蹤fork1/master遠程分支。

爲了能夠以直接的方式推送git默認情況下需要(即在簡單模式下)分支名稱將是相同的。一般情況下這是可取的,但在您的情況下不可取,因爲您顯然希望保留爲origin/master保留的名稱master

所以,你要麼去並手動爲你做什麼,

on fork1-master> git push fork1 HEAD:master 

或者你將不得不告訴混帳更改默認,始終推到上游分支。這可以通過將配置中的push.default設置爲upstream來完成。

這裏是你如何能做到這一點的命令行,而不是在配置上:

on fork1-master> git -c push.default=upstream push 

它會告訴混帳,以確定您的遠程跟蹤分支,把你的分支那裏。

+0

像一個魅力工作,解釋是輝煌的。非常感謝。 – davide