我喜歡殼命令建設者像這樣的東西。這比早期版本更醜陋,但它也可以在裸機上運行,並且具有額外的優勢,即獲取它按照正確順序構建的分支命令上的參數,以便實際工作。
一兩件事 - scriplets這樣是 「在-git的解決方案。」
git-track-all-remote-branches()
{
awk '
$0=="////"{doneloading=1;next}
!doneloading {drop[$0]=1;next}
!drop[$0] {
print "b='\''"$0"'\''; git branch -t ${b##*/} $b"
}' <<///EOD///
$(git for-each-ref --format="%(upstream:short)" refs/heads)
////
$(git for-each-ref --format="%(refname:short)" refs/remotes)
///EOD///
}
一個相當新的checkout
的特點是,如果你籤裸名稱不是當前的一個分支,但只有一個遠程分支相匹配,它會自動建立一個跟蹤分支吧:
$ git branch
master
$ git branch -r
origin/notyet
origin/master
$ git checkout notyet
Checking out files: 100% (2/2), done.
Branch notyet set up to track remote branch notyet from origin.
Switched to a new branch 'notyet'
您可能要成立「第一」克隆(從中計劃重新克隆)作爲一面鏡子,而不是一個正常的工作庫。鏡像就像光禿禿的克隆,只是它直接複製了來自遠程的所有參考。 (更確切地說,它將'fetch' refspec設置爲'+ refs/*:refs/*',而不是,例如'+ refs/heads/*:refs/remotes/origin/*'。) – torek
嗯 - 是嗎? 「正確的」,本地開發者(在這種情況下是從鏡子中克隆的)將會推回到這個鏡像中去? (我對「鏡子」是什麼沒有太多的瞭解,但我有一些模糊的想法,即它是隻讀的) – GreenAsJade
這是一個你想如何工作的問題,但請注意,你不需要必須推送到您從相同的URL。例如,每個回購的'remote.origin.url'都有一個對應的'remote.origin.pushurl'。如果你想要鏡子,我們稱之爲「M」(鏡像),「主要」回購「P」,開發人員克隆「D」 - 成爲「純鏡像」,那麼是的,你不會想要從'D'推到'M',因爲當'M'從'P'提取時它們會丟失;所以'D'應該推到'P'。你可以通過一個預先接收的鉤子來設置'M',這個鉤子表示「拒絕,而是推到'P'」。 – torek