利用Git subtree 部署项目到 GitHub

本文深入探讨Gitsubtree的使用场景与优势,对比gitsubmodule,讲解如何利用Gitsubtree进行仓库共用,包括其命令详解及实际操作步骤。适合于希望掌握高级Git技能的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Git subtree 教程


关于子仓库或者说是仓库共用,git官方推荐的工具是git subtree。 我自己也用了一段时间的git subtree,感觉比git submodule好用,但是也有一缺点,在可接受的范围内。所以对于仓库共用,在git subtree 与 git submodule之中选择的话,我推荐git subtree。

Git subtree是什么?为什么使用Git subtree


git subtree 可以实现一个仓库作为其他仓库的子仓库。

使用git subtree 有以下几个原因:

  • 旧版本的git也支持(最老版本可以到 v1.5.2).
  • git subtree与git submodule不同,它不增加任何像.gitmodule这样的新的元数据文件.
  • git subtree对于项目中的其他成员透明,意味着可以不知道git subtree的存在. 当然,git subtree也有它的缺点,但是这些缺点还在可以接受的范围内:
  • 必须学习新的指令(如:git subtree).
  • 子仓库的更新与推送指令相对复杂。

Git subtree 的使用


git subtree的主要命令有:

 git subtree add   --prefix=<prefix> <commit>
 git subtree add   --prefix=<prefix> <repository> <ref>
 git subtree pull  --prefix=<prefix> <repository> <ref>
 git subtree push  --prefix=<prefix> <repository> <ref>
 git subtree merge --prefix=<prefix> <commit>
 git subtree split --prefix=<prefix> [OPTIONS] [<commit>]
复制代码

准备


我们先在Github 中创建vue-login,然后按照 GitHub 上的提示将项目克隆到本地

     git clone https://github.com/surile/vue-login.git
复制代码

vue-login的路径为https://github.com/surile/vue-login.git,仓库里的文件有:

     vue-login
     |
     |-- build
     |-- pulish
     |-- src
     |-- webpack.common.js
     |-- webpack.prod.js
     |-- webpack.dev.js
     \-- README.md
复制代码

以下操作均位于根目录中。 我们执行以下命令把master 分支中的 build 文件推送到远程仓库gh-pages分支中:

    yarn build || npm run build
    git checkout -b gh-pages
    git add -f build
    git commit -m 'created gh-pages'
    git subtree push --prefix build origin gh-pages
复制代码

这步做完之后就可以在 GitHub 上看见 gh-pages 分支了。GitHub 会自动部署 gh-pages 里的静态文件。 点开 Settings,将会看到以下内容。勾出绿色部分则是你的URL

当我们修改项目完成之后,肯定是要从前 build 的。这时使用以下命令,则就没用了。

     yarn build || npm run build
     git add -f build
     git commit -m '重新 build'
     git subtree push --prefix build origin gh-pages
复制代码

会出现以下错误。

出现这种错误,根据提示我们可以看出来,是要让我们强行将 build 推送到远程gh-pages 分支上,则可以用以下命令

     git push origin `git subtree split --prefix build master`:gh-pages --force
复制代码

运行命令,则可以强制将 build 文件夹推送到远程 gh-pages 分支上了。

### 将网站部署GitHub Pages 的方法 #### Vue 项目部署流程 对于基于 Vue 构建的应用程序,可以通过特定脚本实现自动化部署GitHub Pages。构建过程涉及创建并推送打包后的静态资源文件到 `gh-pages` 分支[^1]: ```bash npm run build && git add . && git commit -m "Deploy to github pages" && git subtree push --prefix dist origin gh-pages ``` 这段命令序列首先调用了 npm 来编译应用程序 (`npm run build`);接着将所有更改加入暂存区(`git add .`) 并提交这些改动(`git commit -m ...`);最后通过子树方式把位于本地仓库中名为 `dist` 文件夹内的产物推送到远程服务器上的 `gh-pages` 分支。 一旦完成上述操作,在 GitHub 上进入该项目页面,导航至 **Settings -> Options** 中的 **GitHub Pages** 部分即可查看已上线站点链接。 #### VuePress 项目部署指南 针对使用 VuePress 创建的技术文档或其他类型的静态网页,则需关注 `.vuepress/dist/` 输出目录的内容处理。具体做法是将此路径下生成的结果集同步给远端存储库内设立好的 `gh-pages` 分支[^2]: ```bash cd src/.vuepress/dist/ git init . git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git git branch -M gh-pages git add . git commit -m 'deploy' git push -u origin gh-pages ``` 这里先初始化一个新的 Git 库,并指定上游 URL 地址以及当前工作副本所对应的分支名称为 `gh-pages` 。之后的操作同常规版本控制一致——添加新文件、记录变更历史并通过网络传输更新数据。 #### 使用 GitHub Actions 实现持续集成(CI) 为了简化重复性的发布任务,可以利用 GitHub 提供的动作服务来设置 CI 流程。前往仓库配置界面 (**Settings**) ,定位到 **Pages** 设置项下的 **Build and deployment** 子菜单,从中选取合适的源码位置作为构建基础(例如这里的 `static-pages` 分支),从而触发后台自动化的部署机制[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值