簡體   English   中英

git CLI 如何執行同時更新所有子模塊的結賬?

[英]git CLI how do I perform a checkout that also updates all of the submodules?

所以我可以克隆一個分支並獲取所有子模塊:

git clone <url> -b myBranch --recursive

這很棒 :) 但是后來我想切換到另一個分支,所以我這樣做:

git checkout myBranch2

這更新了我項目的頂層,但沒有更新子模塊(我在這里沒有看到遞歸選項)。 事實上,我得到一個輸出,表明它知道子模塊需要更新,但我只是不知道如何做那部分:

c:\dev> git checkout myBranch2
M        SubModule1
M        SubModule2
Branch myBranch2 set up to track remote branch myBranch2 from origin.
Switched to a new branch 'myBranch2'

然后我檢查了 SubModule1 的版本,它仍然指向最初檢出的版本(最新),而不是它應該指向的與分支 myBranch2 相關聯的版本(大約 3 個更舊的簽入)。

當然,我可以克隆一個新的並同時擁有兩者 - 這是我通常會做的事情,但是我不知道如何做到這一點讓我感到煩惱......這可能很有用。

git checkout運行后

git submodule update --checkout --recursive

git submodule文檔:

git submodule update ...

通過克隆丟失的子模塊並更新子模塊的工作樹來更新已注冊的子模塊以匹配超級項目的期望。 “更新”可以通過多種方式完成,具體取決於命令行選項和submodule.<name>.update配置變量的值。 支持的更新程序有:

  • checkout - 記錄在超級項目中的提交將在分離的HEAD上的子模塊中檢出。 這是在給出--checkout選項時完成的,或者沒有給出選項,並且submodule.<name>.update未設置,或者如果它被設置為checkout

  • ...

--recursive

此選項僅對foreachupdatestatussync命令有效。 遞歸遍歷子模塊。 該操作不僅在當前 repo 的子模塊中執行,而且在這些子模塊內的任何嵌套子模塊中執行(等等)。

您還可以設置一個post-checkout掛鈎,以便自動執行子模塊的更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM