2017-07-08 42 views
1

我有一個在origin遠程的master分支的git倉庫。團隊中的其他開發人員將他們自己的dev/feature分支推向同一個遠程。最終這些分支機構將被丟棄,或者壁球-併入master並稍後刪除。一個git分支可以在同一個遠程中膨脹嗎?

現在團隊中的某些開發人員並不熟悉git,並可能通過添加二進制文件等來擴大其功能分支的歷史記錄。最終,他們將發送拉取審閱請求,該請求必須經過審覈,審閱者將執行沒有二進制文件被添加。

在這種情況下,我預計dev/feature分支會變得臃腫(例如,git可能變慢,拉/克隆它們可能需要一段時間,等等)。現在的問題是,這是否會導致與那些沒有臃腫的同一個遠程中的其他分支機構合作的人員出現任何性能問題。

+0

考慮使用[git-lfs](https://git-lfs.github.com/)作爲二進制文件,以避免在版本控制中仍然有二進制文件時出現回購膨脹。 – Schwern

+0

如果您沒有任何Git自身沒有的分支訪問控制機制,其他開發人員在克隆/拉取/獲取時也會獲取與二進制相關的Git數據。 – ElpieKay

回答

2

問題是,這是否會導致任何性能問題,只與在同一個遠程的其他分支工作的人沒有臃腫。

如果臃腫分支推,是的,它會影響其他的性能,但僅用於git fetch(包括git pull)。它會默認下載每個分支的全部歷史記錄和全部內容。有各種各樣的方法,如git clone --single-branch只得到master,但下面有更好的解決方案。

但它不應該影響其他操作。 git diffgit log等......都應該基本上不受影響。

與其阻止人們將二進制文件放入版本控制或僅克隆某些分支,請使用git-lfs。這是兩個世界中最好的。您可以將二進制文件放入版本控制中,但實際內容存儲在存儲庫之外,以避免資源庫膨脹。

+0

git-lfs是一個不錯的選擇,但據我所知,我們必須建立一組將被git-lfs(例如* .png,* .a)跟蹤的路徑全局模式。我擔心的是,人們不可避免地最終會提交繞過我們設置的所有模式的二進制文件。 – roim

+0

@roim有了一個體面的網絡,如果有偶爾的二進制提交,它不應該是一個問題。你可以用BFG追溯修復它。而且,由於你正在瓜分合並分支,該分支中的任何臃腫歷史將被垃圾收集。 – Schwern

+0

啊,所以我想我錯過了這個答案:當功能分支被刪除/垃圾收集時,膨脹將結束。是這樣嗎?如果是這樣,可能值得加入答案,即使我們沒有最終使用git-lfs,我也會在晚上睡得很好。我喜歡lfs的想法,但在我的環境中對它的支持仍然有點實驗性。 – roim

相關問題