ドキュメント
認証が通らないパターン
please make sure you have the correct access rights and the repository exists. exit status 128
- git cloneにHTTPつかってる場合
- SSHKeyが未登録の場合
submodule追加の練習
- サブモジュールとして読み込むリポジトリ(child)を公開で作る
- 親リポジトリ(parent)に1.を追加する
※HTTPで追加すると更新に失敗するのでSSHを利用
※HTTPで追加した場合は、submodule削除して入れ直し
Terminal
git init child
cd child
touch README.md
git add .
git commit -m "first commit"
# GITHUB上でchildリポジトリを作る
git remote add origin git@github.com:<GITアカウント>/child.git
cd ../
git init parent
cd parent
git submodule add git@github.com:<GITアカウント>/child.git
git add .
git commit -m "first commit"
VSCODE上なら以下の様に登録されたサブモジュールが青で表示される
Terminal
# GITHUB上でparentリポジトリを作る
git remote add origin git@github.com:<GITアカウント>/parent.git
GITHUB上で見ると、以下の様にサブモジュールにリンクされている
(@以降はcommit番号)
マスター以外のブランチを使う場合
git submodule add -d <ブランチ名> <リポジトリ名>
submodule更新の練習
サブモジュール(child)を更新して親(parent)に反映
以下3つのやり方があるので、順に試す
git submodule update --remote --merge
git submodule update --remote
git submodule update --recursive
-
child
のREADME.md
を更新してPUSH -
parent
で更新をPULLしてマージ -
parent
をpush
README.mdを更新
cd ../child
git add .
git commit -m "Update README.md"
git push
cd ../parent
git submodule update --remote --merge
# もしくは
# git submodule foreach git fetch
# git submodule foreach git merge origin/master
git add child
git commit -m "Update child"
git push
さらにREADME.mdを更新
# ここまで同じ
git submodule update --remote
# ここから同じ
さらにREADME.mdを更新
# ここまで同じ
git submodule foreach 'git pull origin master'
git submodule update --recursive
# ここから同じ
サブモジュールの解除
cd ../parent
rm -rf child
git submodule deinit child
rm .gitmodules
rm -rf .git/modules/child
error: the following file has local modifications:
ローカルリポジトリをサブモジュール
リポジトリ削除
GitHubから公開したchild
を削除
参考
https://qiita.com/BlueSilverCat/items/19bb9b814572cd35b2ae
https://rochefort.hatenablog.com/entry/git_submodule_update_recursive