web-dev-qa-db-ja.com

別のgitリポジトリから単一のファイルをリンクする

別のgitリポジトリから独自のリポジトリに単一ファイルをどのようにリンクしますか?完全なリポジトリではなく、単一のファイルが必要です。 git submoduleを使用するのは適切な方法のようですが、全体を把握したいと考えています。

50
Brendan Byrd

Gitの作業単位がリポジトリ(より正確にはリポジトリcontent)であることを考えると、1つのファイルを簡単に統合できないと思います。

その履歴が必要ない場合は、単純にリポジトリにコピーすることを検討できます。
しかし、履歴が必要な場合は、いくつかのgit filter-branch(「 git:ライブラリをプロジェクトから分割する方法は?filter-branch、subtree? "順番に。ただし、1つのファイルだけでは多くの労力がかかるようです。

理論的には、 " git:symlink/reference to a file in an external repository "は、サブモジュールとsymlinkを組み合わせたソリューションを提案します。
(from PavelŠimerda

$ git submodule add /url/submodule/<reponame>
$ ln -s <reponame>/path/to/<linked_file>
$ git add .gitmodules <linked_file>
$ git commit -m "add a symbolic link to <linked_file> with the respective submodule"

2011年以降(上記の元の回答)、 Gavrielコメント内 を報告します:

  • メインリポジトリをチェックアウトすると、リンクされたファイルはシンボリックリンクではなく、ファイルの内容が「<reponame>/path/to/<linked_file>」になります。つまり、gitはシンボリックリンクのターゲットをファイルコンテンツとしてコミットします。
  • しかし、基本的な考え方は機能します。
    file」の代わりに「submodule/path/to/file」を使用すると、機能します
30
VonC