2017-08-01 44 views
1

我試圖設置git在所有git pull命令上執行git submodule update --init --recursive(或者在服務器端提交新的提交時)。Git的拉鍊安裝程序將子模塊更新到遠程的簽出SHA的

我的目標是讓我的同事和我在一個不被咬傷**再次被人做了git add *git pull,然後不得不手動播放與子模塊命令恢復他的問題。

我的問題是,我認爲克隆項目和/或拉應該更新與遠程混帳(這包括子模塊)的配置。這種情況發生了很多與在庫被開發,但人們忘了更新他們的子模塊的高層項目...

我儘管這會已經通過,現在回答,但我不能找到它。現在,我有一個同事想要一個單一的git回購(無子模塊),但它爲CI/CD的角度帶來了自己的一套問題...

我不想要做像派珀谷歌解決方案)來管理這...我相信有人必須有答案,並可以幫助我弄明白。

問候, 埃裏克·拉方丹

回答

0

我離開這個答案在reference.For解決上拉更新子模塊的問題,我們需要了解如何子模塊的git工作。

子模塊是在另一個git倉庫中嵌套git倉庫。換句話說,第一個Git(項目)引用另一個Git倉庫(子模塊,可能是一個庫)。使用標準子模塊時,它將作爲具有特定SHA的分離頭檢出。這意味着做一個拉動它會不是更新項目引用。

如果子模塊設置爲跟隨一個分支,比將意味着,我們預計子模塊發展,我們也希望它總是遵循一些標準到我們的項目。

考慮到這一點,當我們做一個git pull時,我們希望將子模塊「檢出」到我們配置的修訂版(無論是特定的提交還是分支)。爲此,我們可以配置「獲取」在我們的配置上遞歸;

git config --global fetch.recurseSubmodules true

我希望配置這樣一來,你想與git的子模塊的工作。然後,這個技巧可能有助於在進行推送之前查看子模塊中的衝突;

git config --global push.recurseSubmodules check