2013-10-10 82 views
1

有一個裸遙控器(我們稱之爲group_origin)。
我做了一個裸鏡的克隆(my_origin)。
git clone my_origin到一個工作目錄的存儲庫(my_rep)。
my_rep我的代碼,推到my_origin並從my_origin拉。從遙控器拉出所有分支,通過它的鏡子裸遙控器

group_origin由我的同事更新時,我從group_origin更新my_origin
我看到group_origin/branch_1這種標籤(當我在my_origin內執行git log時)。因此,my_origin「知道」group_origin上新創建的分支branch_1
但是,當我從my_repgit logmy_rep以後,我看不到branch_1的任何通知。

所以,我的問題是:
我怎麼可以更新由my_originmy_rep(這是在轉的group_origin裸鏡)獲取的group_origin/branch_1新創建的分支?

回答

1

您應該在my_origin中爲group_origin的每個分支創建跟蹤分支。

爲此,我從問題「Track all remote git branches as local branches」中使用that one-liner

remote=origin ; for brname in `git branch -r | grep $remote | grep -v master | grep -v HEAD | awk '{gsub(/[^\/]+\//,"",$1); print $1}'`; do git branch --set-upstream-to $brname $remote/$brname ; done 

否則,默認情況下,my_origin只能申報一個分支(默認一個從group_originreferenced by its symbolic-ref HEAD)。
而反過來,my_rep將只能看到那一個分支。


另一種選擇是將遠程添加到您的本地回購my_rep,直接監測group_origin
(您可以添加儘可能多的,你想要或需要的,只是爲了看看他們的歷史遠程upstream repos

cd my_rep 
git remote add group_origin /url/to/group_origin 
git fetch group_origin 

這樣的話,你會看到那些group_origin/branch_x並且可以決定創建一個,把它推到my_origin

git checkout --track -b branch_x group_origin/branch_x 
+0

只是好奇,它是一個接受/良好做法裸露克隆另一個裸回購? –

+0

@ ansh0l如果你需要推到中間倉庫,那麼這個中間倉庫確實是最好的,所以它可能不常見,但不是一個「壞」的做法。 – VonC

+0

@VonC,謝謝!唯一的問題是,在我的git版本中,我不得不在這一行中替換--set-upstream-to -set-upstream。 – user1541776