2013-03-01 106 views
6

我有一個devel分支和產地/主服務器已更新。我運行git pull,我可以看到遠程更改。然而,當我之前做過git checkout devel時,我當地的主人仍然是我離開的地方。我想合併原產地/主人更改爲我的devel分支;這種分支也存在於遙控器上。將本地主服務器從另一個分支更新到遠程主服務器

我不希望結賬主人分行,因爲我最終將重建一個龐大的系統。我可以將我的本地主人從另一個分支移至原產地/主人?然後我可以從develmerge。或者更容易直接輸入merge原點/主號碼devel直接?這似乎會在稍後遇到麻煩?

編輯:另一種避免此問題的方法是在同一個存儲庫中使用不同的工作空間。
請參閱:git new workdir - 您可能同時檢出了主檔devel,但使用相同的.git存儲庫。

回答

8

更新之間唯一的區別你的本地masterorigin/master,然後合併它,只是與直接合並origin/master,是預先生成提交的合併消息(當然,假設你最終更新master)。所以我說只是合併在origin/master


這就是說,要回答這個問題:「我該如何更新本地非簽出的分支,以配合其跟蹤的分支」,你可以說

git push . origin/master:master 

這使用git push機械,但.的存儲庫意味着「當前的回購」。您的源分支指定爲origin/master,遠程分支指定爲master,因此此更新master以匹配origin/master。你可以用管道命令git update-ref做同樣的事情,但是使用git push更簡單並且更安全一些(因爲它會默認防止非快進合併,並且我相信它也會阻止推送到你的簽出分支) 。

+4

嘿,這是一個與本地推,很好的一個很酷的伎倆,謝謝! – poke 2013-03-01 22:24:28

2

默認情況下,git pull將從遠程分支中獲取併合併到當前分支中。如果您在git pull命令中未指定分支,Git將使用您的分支指定的分支,通常是遠程跟蹤分支。

所以在你devel的分公司運行git pull會從遠程獲取devel的分支,並從那裏合併更改,但不能從主。

請注意,僅運行git fetch將更新遠程的所有遠程分支。因此origin/master將在提取後更新,允許您僅使用git merge origin/master將該合併到當前分支中。

顯然,這將不會更新您的本地雖然,所以你可能要稍後更新過,匯入你devel的分支到它。

相關問題