[git] git submodules
git内でgitを管理する場合は、サブモジュールを使用します.
git付き親appにgit付きサブappを挿入する場合
git cloneを使用する場合、デフォルトでは、サブモジュールはフォルダのみを作成し、ファイルを追跡しません.したがって、次のコマンドの再帰インポートを実行できます.
サブモジュールは互いに影響しません.
たとえば、parent-appでchild-appディレクトリのいずれかを変更します.parent-appとchild-appのcommitはそれぞれの分野である.
(親appのcommit(変更)はchild-appに影響しませんが、child-appのcommit(変更)は親appに影響しません.)
git status-shortの後、サブモジュールのm変更が表示されます.ここで追加してコミットします(変更は+5と表示されます.下部のpackages/local-clientはサブモジュールなので含まれません).
サブモジュールの変更点にgitが追加されていないことがわかります.以下に示します.
結論として、parent-appでchild-appを変更し、parent-appをコミットした場合、child-appはcommitに含まれません.(サブモジュールlocal-clientディレクトリに入り、Mと表示されます.)
サブモジュールが常に同じであれば良いのですが、親アプリケーションに基づいてサブモジュールをカスタマイズする必要がある場合があります.
この場合、サブモジュールのブランチを個別に作成して適用することができます.
parent-app-1およびparent-app-2でサブモジュールを使用しようとします.
main branchのサブモジュールを持ってきて書きます.
parent-app-1のサブモジュールの内容を変更する必要がある場合が発生しました.したがってparent-app-1にはサブモジュールのブランチが個別に作成される.(親アプリケーションでのみ変更が必要)
次の端末イメージでは、parent-app-1はjbookディレクトリであり、サブモジュールはlocal-clientディレクトリである.
git checkout-b jbook-with-lernaを使用して、サブモジュールの新しいブランチを作成、変更、およびプッシュします.
サブモジュールのコミットが変更されたため、jbookもgit追加とコミットを行う必要があります.
githubで結果を表示します.
(変更前)サブモジュールのメインブランチ(変更後)サブモジュールのjbook-with-lernaブランチ
YouTube
例
git付き親appにgit付きサブappを挿入する場合
> git submodule add {child-app-repo-url} # .gitmodules가 생성된다.
gitサブモジュール、git add、git pushを追加することで、以下の画像に示す青色タグのディレクトリが表示されます.青いフォントのディレクトリは、サブモジュールとして追加されたrepoです.( github )parent-appをgitクローンする場合、サブモジュールは何ですか?
git cloneを使用する場合、デフォルトでは、サブモジュールはフォルダのみを作成し、ファイルを追跡しません.したがって、次のコマンドの再帰インポートを実行できます.
> git clone {parent-app-repo-url} # 이때는, submodules를 가져오지 않는다. 따라서 child-app directory는 비어있다.
> git submodule update --init # submodules의 파일을 가져온다.
> git pull --recurse-submodules # pull을 할때, submodules의 내용도 가져온다.
> git config submodule.recurse true # 항상 --recurse-submodules를 하기 위한 config
サブモジュールを変更する場合
サブモジュールは互いに影響しません.
たとえば、parent-appでchild-appディレクトリのいずれかを変更します.parent-appとchild-appのcommitはそれぞれの分野である.
(親appのcommit(変更)はchild-appに影響しませんが、child-appのcommit(変更)は親appに影響しません.)
テスト
git status-shortの後、サブモジュールのm変更が表示されます.ここで追加してコミットします(変更は+5と表示されます.下部のpackages/local-clientはサブモジュールなので含まれません).
サブモジュールの変更点にgitが追加されていないことがわかります.以下に示します.
結論として、parent-appでchild-appを変更し、parent-appをコミットした場合、child-appはcommitに含まれません.(サブモジュールlocal-clientディレクトリに入り、Mと表示されます.)
parent-appでサブモジュールを変更する必要がある場合は、次の手順に従います。
サブモジュールが常に同じであれば良いのですが、親アプリケーションに基づいてサブモジュールをカスタマイズする必要がある場合があります.
この場合、サブモジュールのブランチを個別に作成して適用することができます.
parent-app-1およびparent-app-2でサブモジュールを使用しようとします.
main branchのサブモジュールを持ってきて書きます.
parent-app-1のサブモジュールの内容を変更する必要がある場合が発生しました.したがってparent-app-1にはサブモジュールのブランチが個別に作成される.(親アプリケーションでのみ変更が必要)
テスト
次の端末イメージでは、parent-app-1はjbookディレクトリであり、サブモジュールはlocal-clientディレクトリである.
git checkout-b jbook-with-lernaを使用して、サブモジュールの新しいブランチを作成、変更、およびプッシュします.
サブモジュールのコミットが変更されたため、jbookもgit追加とコミットを行う必要があります.
githubで結果を表示します.
Ref
YouTube
Reference
この問題について([git] git submodules), 我々は、より多くの情報をここで見つけました https://velog.io/@devstefancho/git-git-submodulesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol