我正在貢獻一個在Github上託管的相當小的開源項目。爲了讓其他人可以利用我的工作,我已經在Github上創建了自己的分支。儘管Github選擇了術語,但我不希望完全偏離主要項目。但是,我並不期望或希望我的所有工作都被接納到主要的存儲庫中。但是,其中的一些已經被合併到主要的存儲庫中,我預計這會繼續。我遇到的問題是如何最好地將我們的兩棵樹保持在可以輕鬆共享代碼的狀態。開源項目上git倉庫的最佳實踐
某些情況下,我還是會遇到包括:
- 我承諾稍後接受 到主存儲庫中的代碼。當我將來從此存儲庫中取出 時, 我的提交被複制到我的 存儲庫中。
- 我將永遠不會被接受的代碼提交到主存儲庫中。當我將來從這個存儲庫中取出時,這兩棵樹已經發散並且修復很困難。
- 另一個人過來並將他們的工作基於我的存儲庫。因此,我應該儘可能避免更改我推送的提交,例如使用git rebase。
- 我希望將代碼提交給主存儲庫。理想情況下,我的更改應該可以輕鬆轉換爲可以直接並乾淨地應用於主存儲庫的修補程序(理想情況下使用git format-patch)。
據我可以告訴有兩個,或者可能三種方式來處理這個問題,沒有一個工作特別好:
- 通常基於關閉的頭部運行git變基,以保持我的變化上游存儲庫。通過這種方式,我可以消除重複的提交,但通常必須重寫歷史記錄,從而導致希望從我的工作中獲得工作的人員出現問題。
- 經常將上游存儲庫更改合併到我的。這在我的最後工作正常,但似乎並不容易將我的代碼提交到上游存儲庫。
- 使用這些的一些組合,並可能git櫻桃採摘保持秩序。
其他人在這種情況下做了什麼?我知道我的情況類似於各種內核貢獻者和Linus主要存儲庫之間的關係,所以希望有很好的方法來處理這個問題。儘管我對git相當陌生,所以還沒有掌握所有的細節。最後,特別是由於Github,我的術語可能不完全一致或不正確。隨時糾正我。
請注意,即使你(力量)推動你的基礎改變,其他人也可以輕鬆拉動rebase來更新。這只是另一個歷史不斷被改寫的研討會。最重要的是,你需要更小心一點,因爲強制推動能夠消除所有的東西:) – rubenvb 2018-01-30 07:27:59