簡體   English   中英

Git:在所有子模塊上遞歸地切換分支(簽出)

[英]Git: Recursively switching branch (checkout) on all submodules

我正在一個包含submodules的git repo上。 我在所有子模塊(包括父模塊)中都有相同名稱的分支(如masterdevelopment ..),它們都跟蹤相應的遠程分支。

我想一次在所有子模塊中簽出相同的分支。 換句話說,我想要的是,如果我切換到父模塊中的development分支,那么所有子模塊也應該切換到development分支,以便我的工作樹與分支保持一致。

手動執行此操作既痛苦又重復。 有捷徑嗎?

我是在git-aliasbash script的幫助下實現的。

以下是我的bash腳本git-rcheckout.sh,取自@qbein的答案

#!/bin/bash
((!$#)) && echo No branch name, command ignored! && exit 1
git checkout $1 && git submodule foreach --recursive git checkout $1

接下來,按照@ u0b34a0f6ae的指示,此腳本將別名別名為rcheckout命令

git config --global alias.rcheckout '!sh ~/path/to/script/git-rcheckout.sh'

問題:當前,僅當您從父模塊執行git rcheckout branch-name時,它才有效。 您可能也可以從子模塊更新bash腳本來執行此操作,但是我太懶了。 因此,歡迎提出建議。

您可以使用--recurse-submodule標志。 例如: git checkout master --recurse-submodules

使用--recurse-submodules將根據超級項目中記錄的提交更新所有已初始化子模塊的內容。 [ https://git-scm.com/docs/git-checkout#git-checkout---no-recurse-submodules]

暫無
暫無

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

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