在我的項目中,我們使用git submodules來管理一些插件。我們的核心項目和子模塊正在並行開發。因此,對於我們而言,每次子模塊向前移動時(必須解決不同開發人員之間的SHA上的衝突等),我們都必須在覈心項目中更新子模塊的SHA,這並不是很好。有沒有辦法讓git子模塊不存儲特定的SHA?
我們想告訴它跟蹤一個分支,讓它成爲那個。但是,似乎子模塊分支跟蹤更容易更新子模塊,但是沒有任何辦法來減輕我們將超級項目指向特定SHA而不是分支的問題。
有人對我們有什麼建議嗎?
在我的項目中,我們使用git submodules來管理一些插件。我們的核心項目和子模塊正在並行開發。因此,對於我們而言,每次子模塊向前移動時(必須解決不同開發人員之間的SHA上的衝突等),我們都必須在覈心項目中更新子模塊的SHA,這並不是很好。有沒有辦法讓git子模塊不存儲特定的SHA?
我們想告訴它跟蹤一個分支,讓它成爲那個。但是,似乎子模塊分支跟蹤更容易更新子模塊,但是沒有任何辦法來減輕我們將超級項目指向特定SHA而不是分支的問題。
有人對我們有什麼建議嗎?
一種可能的選擇是使用git子樹而不是子模塊。
使用過一個我不確定我會推薦它作爲一個長期解決方案,但https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree和https://legacy-developer.atlassian.com/blog/2015/05/the-power-of-git-subtree會提供一個合理的工作原理,並幫助您決定是否有更好的工作流程滿足您的特定需求。
謝謝,@Jonah!我一定會試驗它。我還想出了一個解決方案,以解決我們的問題,我會將其作爲答案進行發佈,以便對任何人都有幫助。 – Eric
正如其他人所指出的,git子模塊並不是爲我們的項目所設計的。但我找到了一種方法來實現我們想要的東西......貼在這裏的情況下,是非常有用的人:
所以,這給了我們什麼,我們想要......一個子模塊允許新用戶遞歸克隆所有相關插件並通過git submodule <command>
進行批量操作,但不會跳過我們不想要的固定提交SHA。
這聽起來像你正試圖使用Git來管理依賴關係。這不是很好。你可能需要一個真正的依賴管理器。或者如果您發現您必須跟蹤絕對最新的提交,那麼這兩個存儲庫可能會更好。 – Schwern
我不相信git可以做你想做的事。一個提交表示一個特定的代碼版本,並允許一個子模塊指定一個引用會違反這個 - 所以一個提交今天起作用,但是由於子模塊的repo的引用正在移動,我的repo中的相同提交明天停止工作?你可以說版本範圍的依賴管理器也是如此,但是至少你有像semver這樣的工具來限制這個易用性。 (即使如此,你仍然有生產版本的收縮包裝工具。) –
查看https://stackoverflow.com/questions/9189575/git-submodule-tracking-latest – nos