回答:
.gitmodules
ファイルを編集してURLを更新し、実行git submodule sync
してスーパープロジェクトと作業コピーにその変更を反映できるようにする必要があります。
git submodule foreach -q git config remote.origin.url
「実際の」サブモジュールのURLを確認するために使用
.git/config
git 2.1.0を使用しても更新されませんでした。私は両方を更新しなければならなかった.gitmodules
し、.git/config
実行する前に手動でgit submodule sync --recursive
私のサブモジュールは、リモート更新されています。
git submodule update --init --recursive --remote
には、実際にリポジトリを新しいリモートに変更する重要なステップが欠けているようです
これらのコマンドは、ローカルリポジトリのファイルを変更せずにコマンドプロンプトで作業を行います
git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git
git config --file=.gitmodules submodule.Submod.branch Development
git submodule sync
git submodule update --init --recursive --remote
スクリーンショットについてはブログをご覧ください:GITサブモジュールのURL /ブランチを同じリポジトリの他のURL /ブランチに変更しています
git add .gitmodules
git commit -m "modified submodule URL"
git push origin master
簡単に言うと、.gitmodulesファイルを編集してから、再同期して更新するだけです。
gitコマンドを介して、または直接、ファイルを編集します。
git config --file=.gitmodules -e
あるいは単に:
vim .gitmodules
次に、再同期して更新します。
git submodule sync
git submodule update --init --recursive --remote
git submodule update --init
私のために働いた、--remote
それをリモートリポジトリのHEADに関連付けるようです。
Git 2.25(2020年第1四半期)では、それを変更できます。
「GitサブモジュールのURLが変更されました」と新しいコマンドを参照してください
git submodule set-url [--] <path> <newurl>
元の回答(2009年5月、10年前)
実際、役割を明確にするパッチが2009年4月に提出されましたgitmodule
。
したがって、gitmoduleのドキュメントにはまだ次のものが含まれていません。
.gitmodules
git -設定:gitの作業ツリーの最上位ディレクトリにあるファイルは、linkgit -of要件に合致する構文を持つテキストファイルである1。
[新規]:
このファイルはGitによって管理されるため、プロジェクトのサブモジュールの+レコードを追跡します。
このファイルに格納されている情報は、プロジェクト構成ファイルに格納されているレコードの信頼できるバージョンを準備するためのヒントとして使用されます。
ユーザー固有のレコード変更(たとえば、ネットワーク状況によるサブモジュールURLの違いを説明するため)は構成ファイルに対して行う必要がありますが、伝搬するレコード変更(たとえば、サブモジュールソースの再配置による)はこのファイルに対して行う必要があります。
このgitサブモジュールのチュートリアルを実行git submodule init
すると、サブモジュールリポジトリのURLを.git / configに追加するために " " が必要であることがわかります。
" git submodule sync
"は、URLが変更された場合にタスクを簡単にするために(特にサブモジュールの数が重要な場合)、2008年8月に追加されました。
そのコマンドに関連付けられたスクリプトは十分に単純です。
module_list "$@" |
while read mode sha1 stage path
do
name=$(module_name "$path")
url=$(git config -f .gitmodules --get submodule."$name".url)
if test -e "$path"/.git
then
(
unset GIT_DIR
cd "$path"
remote=$(get_default_remote)
say "Synchronizing submodule url for '$name'"
git config remote."$remote".url "$url"
)
fi
done
目標は残ります: git config remote."$remote".url "$url"
.git/config
:実行してgit config submodule."$submodule_name".url "$new_url"
されても、ここで説明します。
git submodule set-url [--] <path> <newurl>
何をしますか?
私にとって何がうまくいったか(Windowsでは、gitバージョン1.8.3.msysgit.0を使用):
git submodule init
してgit submodule update
それをすべて行った後、すべては私が期待する状態にあります。リポジトリの他のユーザーが更新するときにも同様の苦痛を感じると思いますが、コミットメッセージでこれらの手順を説明するのが賢明です!
git submodule update
。他の回答に従っても、./git/modules/external
dirの内容は変更されないため、更新を試みても、依然として誤ったURLが取得されます。
git submodule set-url [--] <path> <newurl>