2011-05-30 39 views
4

我使用多臺機器進行開發,因此需要一種「自我協作」的方式。因此,遠程存儲庫上的個人分支是有道理的。顯然,對於這個分支,我會推/拉很多(即每次我在特定的機器上開始/結束編碼會話)。我也喜歡在本地進行重新整理以壓縮/整理一些我的提交。我知道你不應該重定義已經推送到遠程倉庫的提交。然而,如果服務器上只存在我的私有分支(沒有其他人接觸到這個分支),那麼是否存在對服務器上存在的提交進行重新綁定的問題?如果僅在個人分支上重新推動提交

回答

4

那麼,混帳並沒有真正有這個問題。事實上,git自己的開發過程涉及公共服務器上的一個分支,這個分支經常被重新設計(就像每一天左右)。只要每個使用該分支的人都知道它經常被重新設計,那也沒關係。

但是,您需要記住,您將擁有該修補程序的舊版本和新版本,但沒有明確指示哪一個會取代哪個修補程序。你可以很容易地通過強制將分支推回來,當你重新綁定分支並因此完全丟棄舊版本。

1

如果你有一個本地分支,你經常推送到一個遠程倉庫,但沒有人會直接使用(即不會檢出或從你的克隆分支合併),那麼可以將你的本地分支重新綁定爲很多時候,你想要/需要。

但是,這假設一個很好的命名約定來識別這樣的「私人分支」。
而且這也假設你有權利用本地(私人)分支的重寫歷史記錄來強制推送(push -f)以覆蓋自己的(遠程私人分支的)歷史記錄。
最後一點並不明顯,因爲共享回購往往禁用那種推,避免「意外」(除非你有某種ACL管理像Gitolite的)

+0

共享的回購不會禁用力推動不很管理員明確地安裝鉤子(作爲示例提供,但仍然必須手動執行)或使用某種工具(如Gitolite)來完成。 – 2011-05-30 14:10:25

+0

@Jan:a /因此單詞「經常」,b /您不需要任何鉤子或可執行文件或者Gitolite來禁用它:'git config receive.denyNonFastForwards true'就足夠了。 +1你的答案順便說一句(我沒有看到它在當時) – VonC 2011-05-30 14:14:05

+0

我使用Gitolite和管理員。所以我可以強制推送,也可以強制執行我自己的分支的私有權限,以防止任何人意外地使用它。這個分支的命名規則也相當明顯。好點但要提到。 – Dan 2011-05-31 11:27:03

相關問題