Gitリポジトリをネストできますか?私が持っています:
/project_root/
/project_root/my_project
/project_root/third_party_git_repository_used_by_my_project
ローカルですべての管理を容易にすることは意味がgit init/add
ありますか、それともサードパーティを個別/project_root
に管理する必要がmy_project
ありますか?
Gitリポジトリをネストできますか?私が持っています:
/project_root/
/project_root/my_project
/project_root/third_party_git_repository_used_by_my_project
ローカルですべての管理を容易にすることは意味がgit init/add
ありますか、それともサードパーティを個別/project_root
に管理する必要がmy_project
ありますか?
回答:
あなたはサブモジュールと呼ばれるGit機能を探しているかもしれません。この機能は、メインリポジトリ内にネストされている依存リポジトリの管理に役立ちます。
サードパーティのライブラリを別のリポジトリに配置し、サブモジュールを使用してそれらをメインプロジェクトに関連付けます。ここにウォークスルーがあります:
http://git-scm.com/book/en/Git-Tools-Submodules
リポジトリをセグメント化する方法を決定する際に、通常、それらを変更する頻度に基づいて決定します。それがサードパーティのライブラリであり、それに対して行っている変更のみが新しいバージョンにアップグレードする場合は、メインプロジェクトから確実に分離する必要があります。
完全を期すために:
別の解決策があります。サブツリーのマージです。
サブモジュールとは対照的に、メンテナンスが簡単です。各リポジトリは通常の方法で作成します。メインリポジトリで、メインディレクトリのディレクトリにある別のリポジトリのマスター(またはその他のブランチ)をマージします。
$ git remote add -f OtherRepository /path/to/that/repo
$ git merge -s ours --no-commit OtherRepository/master
$ git read-tree --prefix=AnyDirectoryToPutItIn/ -u OtherRepository/master
$ git commit -m "Merge OtherRepository project as our subdirectory"`
次に、他のリポジトリーをディレクトリーにプルする(それを更新する)ために、サブツリーのマージ戦略を使用します。
$ git pull -s subtree OtherRepository master
私はこの方法を何年も使っていますが、うまくいきます:-)
サブモジュールとの比較を含むこの方法の詳細については、このgit howto docを参照してください。
追加できます
/project_root/third_party_git_repository_used_by_my_project
に
/project_root/.gitignore
ネストされたリポジトリが親リポジトリに含まれるのを防ぐ必要があり、それらを個別に操作できます。
ただし、ユーザーが親リポジトリでgit clean -dfxを実行すると、無視されたネストされたリポジトリが削除されます。別の方法は、フォルダーをシンボリックリンクし、シンボリックリンクを無視することです。次にgit cleanを実行すると、シンボリックリンクは削除されますが、「ネストされた」リポジトリは実際には他の場所にあるため、そのまま残ります。
git-subtreeあなたが単一のツリーに複数のプロジェクトで作業するのに役立ちますし、彼らのために分離可能な履歴を保存します。
概要。
gitリポジトリをネストできますか?
はい。ただし、デフォルトでは、gitは.git
ネストされたリポジトリのフォルダーを追跡しません。Gitには、ネストされたリポジトリを管理するように設計された機能があります(以下を参照)。
ローカルですべての管理を容易にするためにgit init // project_rootを追加することは理にかなっていますか、それともmy_projectとサードパーティを個別に管理する必要がありますか?
gitにはネストされたリポジトリを管理する機能があるため、おそらく意味がありません。ネストされたリポジトリを管理するためのGitの組み込み機能はsubmodule
、およびsubtree
です。
ここにあるトピックに関するブログは、ここでSOの質問それぞれを使用しての長所と短所をカバーしています。