2011-02-11 22 views
3

我有一個包含兩個分支1.0和master的git存儲庫。如果我想在1.0上工作,請使用以下命令克隆它:將git更改拉到未檢出的分支

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

而且一切都很好。如果我發出了一個git branch命令我看到:

1.0 

git branch -a看起來是這樣的:

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

但是,如果別人將更改掌握和我更改爲1.0,並嘗試推動,它會因爲我需要用主更改更新我的回購。要做到這一點,我結賬的主人,拉更改,然後切換回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,並嘗試推動,它會失敗,因爲我需要與主的變化來更新我的回購協議。

這是不正確的。只要沒有人將分歧變化推到1.0,你可以推動它。主分支沒有什麼特別之處。你可以使用git branch -d master(如果它與1.0分開,它會通知你它已合併到origin/master而不是HEAD),因爲你似乎對維護自己的版本不感興趣。

同樣,有人推動主人不會阻止你推到1.0,並且你不需要結賬本地master只是檢查origin/master

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 2011-02-11 13:51:22

3

在這種特殊情況下,當主機可以被快速轉發到原點/主機時,我 做git push . origin/master:master(是的,它是一個點'。')。

+0

git push?這是一個錯字嗎? – Rob 2011-02-11 13:54:13

+0

沒有。沒有錯字。嘗試一下。 – 2011-02-12 16:27:04