2017-06-16 52 views

回答

2

您可以使用git submodule foreach在每個子模塊運行任意命令。 --recursive標誌將遞歸通過子模塊的子模塊。 git remote show [name-of-remote]會說哪個分支[name-of-remote]目前有活動。與其他一些工具來清理git remote show的輸出,結合它們給出:

git submodule foreach --recursive "git checkout $(git remote show origin | grep 'HEAD branch' | sed 's/.*: //')" 

這,當然,依賴於已經有克隆的子模塊。

+0

謝謝!我想我可以做的命令'git clone --recursive https ...; git submodule foreach ...',那麼它應該克隆所有內容並簽出他們的主人。 – user

+0

有獨立的解決方案平臺還是Windows版本的平臺?如果我在Windows上運行這個命令,它將無法使用'grep'HEAD分支'| sed's /.*://''部分。 – user

+1

@user我相信'grep'和'sed'包含在標準的Git for Windows安裝中,儘管取決於您在安裝過程中選擇了哪些選項,您可能需要使用git bash而不是cmd。 – 8bittree

2

git submodule foreach git checkout master

+0

謝謝,它肯定會有幫助,但它的默認分支不是主控的那些子模塊會發生什麼? – user