【手順】git subtreeコマンドの使い方
Git subtreeとは
外部のリポジトリを現在のリポジトリに取り込むことができる。
Git上のプロジェクトを他のプロジェクトでも使用したいときに利用する。
Git subtreeコマンドは、取り込んだリポジトリを編集することで、取り込み先のリポジトリも編集可能にする。
Git subtreeとGit submodule
Git subtree
→外部リポジトリを現在のリポジトリのものとして取り込み、手を加えていくときに使用する。
Git submodule
→外部リポジトリを現在のリポジトリの外のものとして取り込み、今後編集しない時に使用する。
Git subtreeの使い方
サブディレクトリへの登録方法
前提
Gitで新プロジェクトを作成済み。
以下の作業は、新プロジェクト内で行うこと。
手順
1.取り込みたいリポジトリを、外部リポジトリに登録する。
# git remote add <任意の名前> <取り込みたいリポジトリのURL(SSH)>
例
# git remote add subtree-test [email protected]:subtree-test.git
2.外部リポジトリに登録できているか確認する。
# git remote
<任意の名前>があるか確認。
3.外部リポジトリに登録したものをサブディレクトリに登録する。
# git subtree add --prefix=<任意のディレクトリ名> --suquash <1.で登録した任意の名前> <任意のブランチ名>
例
# git subtree add --prefix=roles/subtree-test --squash subtree-test master
4.サブディレクトリに反映されているか確認する。
# ls -al roles
rolesディレクトリ内に、subtree-testディレクトリとその中身があることを確認する。
5.コミットする。
# git commit -m "任意のコメント"
6.新プロジェクトに反映させる。
# git push origin master
7.ブラウザ上で、反映されたか確認する。
取り込み先のプロジェクトの[Repository]を押下し、3.で登録した<任意のディレクトリ名>があることを確認する。
取り込み先(子)を編集し、取り込み元(親)に反映する方法。
前提
- 取り込み先(子)での変更を取り込み元(親)に反映させたい。
- 取り込み先(子)を編集済み
- サブディレクトリへの登録済み
コマンド
# git subtree push --prefix=<親にpushしたいディレクトリ名> <外部リポジトリ名> <push先ブランチ名>
<親にpushしたいディレクトリ名> → git subtree add した際に指定したディレクトリ名
<外部リポジトリ名> → git remote add した際に指定した外部リポジトリ名
<push先ブランチ名> → 親リポジトリのブランチ名
例
# git subtree add --prefix=roles --squash subtree-test master
取り込み元(親)を編集し、取り込み先(子)に反映する方法。
前提
- 取り込み元(親)の変更を取り込み先(子)に反映させたい
- 取り込み先(子)を編集済み
- サブディレクトリへの登録済み
コマンド
# git subtree pull --prefix=<子のpullしたいディレクトリ名> --squash <外部リポジトリ名> <pull先ブランチ名>
<子のpullしたいディレクトリ名> → git subtree add した際に指定したディレクトリ名
<外部リポジトリ名> → git remote add した際に指定した外部リポジトリ名
<pull先ブランチ名> → 親リポジトリのブランチ名
例
# git subtree pull --prefix=roles --squash subtree-test master
Author And Source
この問題について(【手順】git subtreeコマンドの使い方), 我々は、より多くの情報をここで見つけました https://qiita.com/takahashi-kazuki/items/0c34b3bc5da6700d38a5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .