2011-11-17 427 views
10

我正在使用分支來創建和部署out平臺的自定義實例。這些實例通常以「主」分支的分支開始,進行定製,部署到測試和生產中,最後歸檔。阻止git合併到master分支

如果將新功能或錯誤修復添加到主服務器中,我希望能夠將它們合併到我的項目實例(分支)中,但我幾乎從不想將分支的更改合併回主服務器。這最近發生的錯誤,並造成了一些嚴重的頭痛。用於更新存儲庫的git pull將所有內容合併到主分支中,然後被推回主庫。

有沒有簡單的方法來禁止合併回主?或者至少需要一些力量標誌?

回答

2

通過禁止任何人推送主分支,您可以確保不會合併到其他分支的主人。有權威的人可以做到這一點。 Gitolite可以讓你精確地調整對分支機構的訪問。除非您是特定用戶,否則您也可以編寫自己的服務器端鉤子並拒絕主分支的更新。

+0

有什麼用downvote?讓我知道我的答案有什麼問題,我會澄清。謝謝。 –

+0

嗨,亞當,我不認爲我低估了你的答案。我其實很確定我加了它。但是如果我犯了一個錯誤對不起。另外Gitolite對我們現在的需求來說有點太多了,但是我可以看到服務器端的鉤子可以做我需要的東西。 – balm

+0

gitolite出奇地容易。我建議你給它一個旋轉。最大的好處是它大大簡化了密鑰管理。噢,我並不是說你就是低調的。你無法獲得該信息。我真的很好奇爲什麼我的回答沒有滿足某人,或者我的錯誤。 –

-1

如果你只是想避免合併成主,你可以使用預合併鉤來禁止它。

+1

我發現沒有證據表明有任何這樣的事情作爲預合併鉤子。 – pjmorse

1

Git非常樂意使用多個遠程存儲庫。

我會建議使用一個遠程存儲庫每個自定義實例。這不會改變您的工作流程,因爲Git可以將任何兩個分支合併在一起,而不管其來源。

從你的「主遠程」更新「自定義實例」與錯誤修正你輸入像

git checkout <custom-branch> 
git fetch main 
git merge main/master 

其中main是你指的是爲master(我改了名字遠程倉庫爲了避免分支和遠程)

之間混淆你的地方分支機構,指定main作爲遠程跟蹤分支,而不是指定一個特定實例的遙控器。即每個定製實例一個遠程倉庫。

要更改推送到您的自定義實例,使用

git push 

在極少數情況下,你需要推送到上游切換到「主」分支利用

git push main 
+0

謝謝。這正是我們工作的方式,但不知怎的,有人做了一個git push - 然後是git pull或類似於合併所有內容的東西。或者爲了免除我的理解。 – balm

+0

不要使用git pull。首先獲取Git,然後根據更新的遠程跟蹤分支進行合併,重新綁定或重置本地分支。 –

+0

我同意亞當,那就是我這樣做的方式。只要確保你在推動你的改變或事情變得醜陋之後不會變質。 –