2012-03-21 64 views
7

我怎麼能告訴git,雖然我想讓某些分支上的「git fetch」,我不想讓這些分支上的「git push」。如何讓git分支的上游引用爲只讀?

換句話說,我有一些反映「當前工作」的分支,我想將它們推送到我的上游存儲庫。但我有其他分支(包括主人),我打算在本地存儲庫中反映「其他工作」,我不希望從這裏進入這些分支。

這是我的遠程存儲庫,在其他上下文中,我希望能夠推入所有分支。但不是從這個特定的本地實例。

我認爲這是可能的,因爲git遠程顯示的來源有時告訴我,我有分支配置爲「git pull」而不是「git push」。但我不明白配置文件足以手動創建這種效果,而且我也不理解git的命令行語言。

現在,我能做的最好的事情就是確保我的本地副本已過期,以保留上游分支機構,我想保持原始狀態。 (另外,在我的git push命令行中顯式指定接收分支 - 指定我只想推入與本地簽出分支相對應的遠程實例 - 防止推入不需要的分支。但是,我想消除該複雜)

+1

可能重複[禁止遠程推送到主分支在混帳](http://stackoverflow.com/questions/2045329/prohibit-remote-pulse-to-the-master-branch-in-git) – ralphtheninja 2012-03-21 19:06:34

+0

它看起來像在接收存儲庫上設置receive.denycurrentbranch的解決方案。但是我正在尋找對發送存儲庫的控制權,取而代之。 – rdm 2012-03-21 19:18:31

+0

你可以設置'push.default = upstream',然後一個'git push'不需要額外的參數就只會推送本地簽出的分支。這看起來是下一個'git'版本的默認行爲。 – Borealid 2012-03-22 13:13:35

回答

0

與評論中說的Borealid類似,在本地副本中,您應該設置git config push.default upstream,然後另外確保那些您不希望推送到的分支沒有上游分支分配。有一個git branch --set-upstream命令,但不允許您設置一個空的上游配置以刪除它,因此您必須手動編輯.git/config文件,並從相應分支的部分中刪除merge = refs/heads/*行。

0

實際上,它看起來像push.default = current將做我想要的。

這不完全是我所要求的,但它「足夠好」。它具有簡單的優點。

簡單是一種美德 - 使理解和使用系統變得簡單明瞭。

它也非常模仿我認爲從git pull看到的行爲。

+0

從'git help config'引用: 「追蹤 - 棄用的上游同義詞」。 – Borealid 2012-03-22 21:02:15

+0

好的,哪個版本的開始發生在? (爲什麼打破現有的文檔等?) – rdm 2012-03-22 21:25:04

相關問題