1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub git subtreeの使い方

Last updated at Posted at 2021-08-29

はじめに

git subtreeの軽いまとめです。

git submoduleはリモートをコミットIDで管理しますが、subtreeは登録したレポジトリのコミットにsubtreeで登録したレポジトリの変更を含めます。

subtreeを使用すると、サブのリモートレポジトリの変更がメインのレポジトリの変更に加わるので、コードレビューがやりやすくなります。

メインのレポジトリの開発で、サブのレポジトリも共に開発が行われるようなケースにおいて、メリットが大きいです。

サブのレポジトリの変更が頻繁ではない場合や、コミット単位でサブのレポジトリを使いたい場合はsubmobuleの方が適しています。

ただ、環境ごとに設定する必要があることと、設定したことを忘れいていると結局使わないってことにもなりがちなので、あまりおすすめはしません。

リモートの登録

git remote add <任意のリモート名> <レポジトリのURL>
git remote add libft git@github.com:kohkubo/libft_v3.git

subtreeのインポート

git subtree add --prefix=<サブディレクトリのパス> <リモート名> <リモートのブランチ名>
git subtree add --prefix=lib/libft libft main

子のレポジトリのpush, pullについて

親のレポジトリでは、subtreeを使用する際に特が必要なことはありません。
子のレポジトリに対して、行った変更を反映させたい段階、もしくは、子のレポジトリの更新を受け取りたいときにgit subtreeコマンドを使ってpushやpullをすることになります。

subtreeをpushする

subtreeに関連のあるcommitをした後、subtreeにpushすることで、レポジトリに変更を反映させることができます。

git subtree push --prefix=<サブディレクトリのパス> <リモート名> <リモートのブランチ名>
git subtree push --prefix=lib/libft libft main

subtreeをpullする

git subtree pull --prefix=<サブディレクトリのパス> <リモート名> <リモートのブランチ名>
git subtree pull --prefix=lib/libft libft main
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?