链接另一个git存储库中的单个文件

时间:2011-09-29 13:04:37

标签: git git-submodules repository

如何将单个文件从另一个git存储库链接到您自己的存储库?我不想要完整的存储库,只需要一个文件。使用git submodule似乎是正确的路线,但它想抓住整个事情。

1 个答案:

答案 0 :(得分:28)

考虑到git的工作单元是一个存储库(或者更确切地说是存储库 content ),我认为你不能轻易地集成一个文件。

如果您不需要历史记录,可以考虑将其复制到您的仓库中 但是如果你确实需要历史记录,那么一些git filter-branch(如“git: How to split off library from project? filter-branch, subtree?”)就是有序的。这对于一个文件来说似乎付出了很多努力。

理论上,“git: symlink/reference to a file in an external repository”提出了一个结合子模块和符号链接的解决方案 (来自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报告了in the comments

  
      
  • 当我签出主要仓库时,链接文件不是符号链接,而是文件内容为“<reponame>/path/to/<linked_file>”。   换句话说,git将符号链接的目标提交为文件内容
  •   
  • 但基本想法有效   我使用“submodule/path/to/file”代替“file”并且它可以正常工作
  •