从另一个 Git 存储库引用一个 Git 存储库

发布日期:2026-07-02 12:45:04   来源 : 杭州电子商务研究院    浏览量 :22
杭州电子商务研究院 发布日期:2026-07-02 12:45:04  
22

介绍

在大型组织中,您可能拥有数十甚至数百个 Git 存储库。这些存储库可能具有通用配置和脚本,或者您可能正在处理 C++ 项目,需要从源代码编译多个存储库。如何在不到处复制粘贴文件的情况下实现这一点?

在本指南中,您将了解git 子树作为此问题的解决方案。您将设置一个存储库并执行一些常见操作。本指南假定您对 git 命令行和 GitHub 有基本的了解。如果您需要复习一下,可以观看GitHub 入门

注意: GitHub 正在将其默认分支名称从master更改为main。本指南将使用术语master分支,因为它是撰写本文时的当前默认分支名称。您可以通过阅读GitHub 关于重命名默认分支的官方文档了解有关此更改的更多信息

点文件示例用例

在几年的时间里,你可能会发现自己在几十台不同的电脑上工作。你可以创建一个 Git 存储库,将设置文件保存在其中,以使设置在各种机器上保持一致。这些设置通常保存在以点为前缀的文件中,例如.vimrc.bashrc等。因此,按照惯例,此设置存储库名为点文件。随着点文件项目的进展,你可能想要使用其他人创建的脚本和配置。你可以在点文件中使用git subtrees引用这些存储库,从而利用开源社区并回馈社区

一个常见的用例是将作为 GitHub 存储库发布的 VIM 插件嵌入到您的点文件存储库中。

设置存储库

要以这种方式开始使用git 子树,首先创建一个点文件存储库。

      cd ~
mkdir dotfiles
cd dotfiles
git init
touch readme.md
git add . && git commit -m "initial commit"
    

请注意,这些是 bash 命令。如果你使用的是 Windows,则可以在git bash中执行它们。

您已经创建了一个带有空白自述文件的点文件存储库。

使用 Git Subtree 添加 VIM 插件

在您的dotfiles项目中,创建一个文件夹vim/pack/github/来存储您的插件。此文件夹结构很重要,以便 VIM 能够自动检测并运行插件。您将把其他 git 存储库的内容放在此文件夹中。

为此,运行git subtree add命令。

      git subtree add --prefix vim/pack/github/vim-sensible git@github.com:tpope/vim-sensible.git master --squash
    

此命令将Tim Pope 的 VIM-sensible的主分支嵌入到您的点文件中。另请注意,您使用了--squash标志来压缩历史记录。您可以多次运行此命令以嵌入多个存储库。

更新你的 VIM 插件

对于一个或多个子树,您可能想要更新到特定分支或 git 标记。您可以通过运行git subtree pull命令来执行此操作。

      git subtree pull --prefix vim/pack/github/vim-sensible/ git@github.com:tpope/vim-sensible.git master --squash
    

这会创建一个新的提交,并将所有更改压缩到点文件存储库顶部

将更改贡献回嵌套存储库

作为一名优秀的开源公民,当您发现并修复错误时,您会希望与社区分享您的修复。git subtree使这变得简单,因为您不需要单独签出该嵌套存储库。为此,您将执行以下步骤:

  1. 在 GitHub 上Fork 嵌套存储库,例如vim-sensible 。
  2. 提交点文件存储库中的更改。
  3. 运行以下命令来推送至你的 fork。
      git subtree push --prefix vim/pack/github/vim-sensible/ git@github.com:chinwobble/vim-sensible.git issue-xxx
    
  1. 在嵌套存储库上创建拉取请求
  2. 将远程的最新内容拉入你的点文件中。

请注意,推送时,您将远程更改为您自己的 fork,并且您正在推送到新分支,在上面的示例中,它是issue-xxxx。如果您正在处理 GitHub 问题,您可能希望使用问题编号作为分支名称。

结论

git subtree是将一个存储库嵌套在另一个存储库中的好选择。它不需要用户学习额外的命令来访问嵌套存储库。您可以通过阅读关于 Git 子树合并来了解有关此功能的更多信息。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据