5

を含む git リポジトリに取り組んでいますsubmodules。すべてのサブモジュール (親モジュールを含む) に同じ名前 ( .. など)masterdevelopmentブランチがあり、それらはすべて対応するリモート ブランチを追跡します。

一度にすべてのサブモジュールで同じブランチをチェックアウトしたいと思います。言い換えれば、私が望むのはdevelopment、親モジュールでブランチに切り替えた場合、すべてのサブモジュールもdevelopmentブランチに切り替えて、作業ツリーがブランチと一貫性を保つようにすることです。

これを手動で行うのは苦痛で反復的です。ショートカットはありますか?

4

2 に答える 2

3

と の助けを借りてこれを達成しましgit-aliasbash script

以下は、 @qbeinの回答から取られた git-rcheckout.sh と呼ばれる私のbashスクリプトです

#!/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 スクリプトを更新できますが、私は怠け者です。したがって、提案は大歓迎です。

于 2017-12-15T14:41:44.607 に答える