如何基于github开源项目进行软件开发
准备
要使用 github.com 就要先解决能否顺利访问的问题。
我的本地MacBook电脑端浏览器上使用 ghelper 作为代理,命令行下使用Clash作为命令行的代理。
注意: Clash 通常提供的是 http的代理,7890 端口。代理软件的安装设定等不在本文讨论范围。
如下以 vue-vben-admin 这个开源的后端管理框架为例,讲解如何基于github的开源项目开发我们自己的项目(私人订制)。
简介
vue-vben-admin 这个框架其主仓库位于 https://github.com/vbenjs/vue-vben-admin.git 其使用Vue3+Vite+TypeScript 的最新版本进行开发。该项目比较活跃,且使用人数众多,截止本文(2025-12-03)点赞 30.8k,并且 fork 数量也不少 8.4k,是个优秀的中后端WEB框架。
目标
我们的目标是:
- 以 vue-vben-admin 官方仓库为基础框架;
- 持续开发我们自己的管理后台功能和页面;
- 定期同步上游官方仓库的
bug修复和新特性; - 不丢失我们自己的功能代码。
最终拥有一个长期可维护的“私有定制版” vue-vben-admin。
fork 官方仓库
首先我们需要将 https://github.com/vbenjs/vue-vben-admin.git fork 到我们自己的github账号内,仍旧用 vue-vben-admin 这个仓库名称。这个步骤可以在github的网页上直接可以完成。
clone 我们 fork 的仓库
此时你需要将 Clash 开启为全局代理,然后将我们自己的 vue-vben-admin clone 到我们自己的电脑 vue-vben-admin-web 文件夹内。
## 将github的git访问设置代理服务器,此时的设置只对github有效,而不影响其他仓库的git操作
git config --global http.https://github.com.proxy http://127.0.0.1:7890
git config --global https.https://github.com.proxy http://127.0.0.1:7890
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890
git config --global http.https://github.com.proxy socks5h://127.0.0.1:7890
## 如果你的代理已经成功启动并生效,就能够使用如下命令将项目clone下来。
## 你可以用 curl -x http://127.0.0.1:7890 https://github.com 验证代理是否OK
git clone https://github.com/yujinping/vue-vben-admin.git vue-vben-admin-web
添加官方仓库为 upstream
cd vue-vben-admin-web
## 添加官方仓库为 upstream
git remote add upstream https://github.com/vbenjs/vue-vben-admin.git
创建你自己的“开发分支”
需要注意的是: *** 永远不要直接在 main 上开发,否则同步上游时会冲突爆炸。 ***
# 创建并切换到自定义开发分支
git checkout -b dev
以后我们所有的功能、页面、菜单、样式,都在 dev 这个分支上进行开发,并进行常规的 git 操作即可。
定期同步上游更新(关键)
# 1. 拉取官方最新代码
git fetch upstream
# 2. 切换到 main 分支,合并官方更新
git checkout main
git merge upstream/main
# 3. 回到你的开发分支 dev,rebase 到最新的 main 即可
git checkout dev
git rebase main
这样我们的修改就始终“叠在”官方最新代码之上,历史清晰,冲突可控。
推送dev分支
git push origin dev
此时如果 push 发生认证错误,你需要用户名和密码进行认证。或者需要在 github 获取访问令牌 access token 才行。
获取token方法
具体在 github.com网页你的头像 -> Settings -> Developer Settings -> Personal access tokens -> Tokens(classic) -> Generate new token(classic) 创建一个新的 token,需要勾选上 write:packages等权限。最后复制 token(类似 ghp_xxxx 一串的字符文本) 。
在命令行需要登录的 username处填写该token, password 处直接回车(或再填一次令牌)即可。
git config --global credential.helper store # 会明文写到 ~/.git-credentials
git push origin main
# 提示 Username: 填令牌
# 提示 Password: 直接回车(或再填一次令牌)
一句话总结
用 main 跟踪官方,用 dev 开发我们自己的功能,定期 rebase,冲突最少,升级最干净。