Git Submodule Cheatsheet (日本語)

git clone <url> --recursive

現在存在するリポジトリにサブモジュールを作成します

サブモジュールのパスを更新したい場合(つまり、サブモジュールがローカルクローンに保存される場所)

git submodule init
git mv oldpath/submodule newpathsubmodule
git submodule update

これにより、サブモジュールのエントリが変更されることに注意してください。,ほとんどの場合、git submodule update --initSCMとより一貫性があるため、

未使用のサブモジュールを削除します

Remove referencing lines in .gitmodules
Remove referencing lines in .git/config
rm -rf submodule-dir/
git add
git commit -m "removing submodule"

削除後、サブモジュールのステータスを確認してください。

Check Submodules status

Gitサブモジュールは実際に別のリポジトリのcommit revを使用しており、更新したい場合はこれらの変更をメインリポジトリにプッシュする必要があります。,

これらは、サブモジュールを指すrevの配管をチェックアウトするときに証明されます

$ git log bats
commit aa69c87bd96cb6aa0d586b871cfdd4da3abe0d3e
Author: <[email protected]>
Date: Tue Sep 13 23:47:58 2016 +0900 Set up basic BATS test framework$ git cat-file -p aa69
tree b6e54e3e4a1e6aeae3a46d1c296a08dbd2bfd10a
parent e7134d506995dce59a14df8dd8d49a7a2e844a8d
author <[email protected]> 1473778078 +0900
committer <[email protected]>1473783135 +0900$ git cat-file -p b6e54
100644 blob 82520ca123af9986966f282a109093cf39780722 .gitignore
100644 blob c1ddd1345dfd5b028dd16d55ae5f8aed286a019a .gitmodules
100644 blob b3d51add840a46d2590a3809905f0ebb980471f9 README.md
100755 blob 067db410b175787f5621b7737552e5e0558c7a3a Test
160000 commit 03608115df2071fff4eaaff1605768c275e5f81f bats ### Commit from another repository ###
040000 tree cc240386f9cc2546ec383b9d7afc7f432bf70f69 t

リポジトリを複製した後にサブモジュールを引き出します

# Your repository will have .gitmodules file
cd ~/repository
git submodule update --init # Adding --recursive here will also update the submodule's submodule if it exists

リポジトリurlを更新します。git/configから。gitmodules also

git submodule sync # Adding --recursive here will also update the submodule's submodule if it exists

サブモジュールの特定のブランチをチェックアウト

デフォルトでは、サブモジュールはメインリポジトリへのコミット時にリポジトリの特定のrevをチェックアウトします。 サブモジュールでブランチを使用する場合(たとえば、安定したブランチ)は、ブランチを追加する必要があります。,gitmodulesファイルを使用します

git submodule update --remote

ブランチを指定せずに使用した場合--remoteマスターブランチを自動的に取得します。 サブモジュールを開発している場合も、--mergeまたは--rebaseのいずれかを使用できます

サブモジュールで開発

メインリポジトリからサブモジュールを更新する場合は、特別なプッシュを使用できます

また、foreach comamandを使用できます

$ git submodule foreach 'git stash'
Entering 'CryptoLibrary'
No local changes to save
Entering 'DbConnector'
Saved working directory and index state WIP on stable: 82d2ad3 Merge from origin/stable
HEAD is now at 82d2ad3 Merge from origin/stable

最後に、これらのエイリアスを使用してワークフローを改善できます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です