2012-12-18 47 views
8

如何獲取遠程分支並更新該分支的git本地引用而不影響當前分支?例如,如果我這樣做git fetch遠程分支和遠程參考

$ git pull origin master 

origin/master被合併到我當前的分支。這也不起作用

$ git fetch origin master 

如當時我檢查

$ git branch -r -v 
origin/HEAD -> origin/master 
origin/master 7cf6ec5 test 02 

起源/主裁判 「7cf6ec5測試02」 是後面。真正的原產地/主人是「XXXXXX測試03」。 git fetch只把修改放入FETCH_HEAD,它沒有上傳本地origin/master ref。更新該ref的步驟是什麼?

注:

$ git fetch origin 

將得到所有遠程裁判並更新他們只可惜這是(一)有很多混亂。 (我不希望別人的30-50個隨機分支知道有人不想要我的)和(b)因爲分支在原點被刪除,那些下一次我不會在本地刪除的文檔git fetch origin這意味着路徑結束與cruft。

問題是,如何獲取一個分支並在本地更新其參考?

回答

1
git fetch origin 

這將獲取所有遠程分支和更新他們的遠程跟蹤分支。

現在你可以做兩件事情

git checkout other-branch 
git merge origin/other-branch 
git checkout - 

git push . origin/other-branch:other-branch 

最後一個選項是確定的,如果你知道這將是一個快進合併的任何一個。

+1

謝謝。我如何獲取並更新origin/master。我不想要遠程回購的所有30或50個分支。實際上,我只是嘗試了'git fetch origin'。然後我刪除了原始分支。然後,我再次'git fetch origin',並且看到當我執行'git branch -r -v'時,原來被刪除的分支ref仍然存在於我的本地回購庫中。 – gman

+1

跟蹤分支在提取時不會被刪除。你需要git遠程修剪。 –

+0

'git fetch origin'和'git fetch --all'有什麼區別? – jww

0

您可以隨時向git fetch命令提供參考。特別是,如果你想更新other-branch,你可以這樣做:

git fetch origin other-branch:other-branch 

這將獲取的refs/heads/other-branch從源頭當前提示,並把它放到一個同名的地方分支。

另一種方式,就是繼續前進,到:

git fetch origin other-branch 

,然後重新創建本地分支:

git branch -l -f other-branch -t origin/other-branch 

-l是有作爲一種安全機制。它會創建一個reflog條目,以便您可以根據需要恢復到以前的版本。

5

我想我正在尋找的是這個

$ git fetch origin master:refs/remotes/origin/master 

這似乎在這工作不像「混帳取起源大師」我的確看到裁判得到更新。

任何理由是錯誤的答案?我應該害怕的東西?