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

发布于 2024-12-07 14:49:01 字数 111 浏览 1 评论 0原文

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

How do you link a single file from another git repository to your own repository? I don't want the full repository, just a single file. Using git submodule seems like the right route to go, but it wants to grab the whole thing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尐偏执 2024-12-14 14:49:01

考虑到 git 的工作单元是一个存储库(或更准确地说是一个存储库内容),我认为您无法轻松集成一个文件。

如果您不需要它的历史记录,您可以考虑将其复制到您的存储库中。
但如果你确实需要历史记录,那么一些 git filter-branch (如“git:如何从项目中分离库?filter-branch,子树?”)是有序的。不过,对于一个文件来说,这似乎需要付出很大的努力。

理论上,“git:符号链接/对外部存储库中文件的引用”建议了一种结合子模块和符号链接的解决方案。< br>
(来自 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 报告在评论中

  • 当我签出主存储库时,链接文件不是符号链接,而是文件内容为“/path/to/”。
    换句话说,git 将符号链接的目标作为文件内容提交
  • 但基本想法是有效的。
    我使用“submodule/path/to/file”而不是“file”并且它有效

Considering that the unit of work for git is a repository (or more precisely a repository content), I don't think you can easily integrate one file.

If you don't need its history, you could consider simply copy it in your repo.
But if you do need the history, then some git filter-branch (as in "git: How to split off library from project? filter-branch, subtree?") are in order. That seems a lot of effort for just one file though.

In theory, "git: symlink/reference to a file in an external repository" suggests a solution combining submodule and 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"

Since 2011 (original answer above), Gavriel reports in the comments that:

  • When I checkout the main repo, the linked file is not a symlink, but instead the file content is "<reponame>/path/to/<linked_file>".
    In other words git commits the symlink's target as file content
  • But the basic idea works.
    I use "submodule/path/to/file" instead of "file" and it works
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文