質問: gitリポジトリの一部をチェックアウトする gitリポジトリの部分だけをチェックアウトするにはどうすればよいですか?複数のモジュールを含むリポジトリがあり、特定のサイトにモジュールの1つだけをインストールしたい。subversionでは、svn export http://example.com/repository/path/to/module ./module-name。
回答: svn exportに最も近いものは git archiveだと思います-) 。あなたはディレクトリを引っ張ることができますpath/to/moduleリポジトリのmasterブランチから、ローカルディレクトリに配置しますmodule-name このような:git archive --remote=url-of-git-repository --prefix=module-name/ master:path/to/module | tar xf - リモートサーバーがアーカイブをサポートしていない場合は、ローカル(ベア)クローンからアーカイブをプルします(ベアクローンを使用すると、重要な場合は、ローカルリポジトリにファイルの別のコピーを作成できなくなります)。ただし、「チェックアウト」の使用は、(私にとって)一部のファイルのみが存在する機能的なgitワークツリーが必要であることを意味します。これは、git1.7.0で導入された「スパースチェックアウト」機能を使用して実現できます。この機能を有効にするには core.sparsecheckout構成オプションを「true」に設定する*、および リポジトリごとの入力$git_dir/info/sparse-checkout保持するパス名のパターンを含むファイル****。 インデックスで低レベルの「スキップワークツリービット」を使用する場合があります*** 個々のファイルのまばらさを管理しますが、代わりに高レベルのメカニズムを使用する方がおそらく簡単です。 ユーザーインターフェイス全体にいくつかのギャップがあります(つまり、「このurlでリポジトリのクローンを作成し、x、y、zのみをチェックアウトする」と言う簡単な方法はありません)が、「部分的なチェックアウト」機能を取得するには十分なはずです。* git configマンページ の「core.sparsecheckout」を参照してください。 **** git read-treeマンページ の「スパースチェックアウト」を参照してください。 *** git update-indexmanpage の「skip-worktreebit」を参照してください。