一次Git Push,同时同步 GitHub 和阿里云
最近公司配置了阿里云云效 Git 用于存放项目代码 个人觉得放在公司的 Git 中更有安全感但我又不想放弃 GitHub 的绿块,如何解决呢? 通过信息检索和AI辅助我尝试实现了 将公司 Git 作为主分支,单次 Push 同时推送两个 Git 仓库 最终 Git 工作流如下: shell 本地仓库 │ │ git p
最近公司配置了阿里云云效 Git 用于存放项目代码
个人觉得放在公司的 Git 中更有安全感但我又不想放弃 GitHub 的绿块,如何解决呢?
通过信息检索和AI辅助我尝试实现了将公司 Git 作为主分支,单次 Push 同时推送两个 Git 仓库
最终 Git 工作流如下:
本地仓库
│
│ git pull
▼
origin(阿里云云效)
│ git push
├────────► 阿里云云效
└────────► GitHub
本文也适用于除云效外的其他仓库,流程相同只是细节不同。
前置准备
Git 准备
为什么先检查 Git 状态?
在修改远程仓库之前,不建议直接执行命令。
不同项目的 Git 配置可能完全不同,先确认当前仓库状态,才能避免覆盖已有配置。
建议执行的命令
git remote -v
// 返回结果示例
origin https://github.com/ZaiHuaOvO/xxx.git (fetch)
origin https://github.com/ZaiHuaOvO/xxx.git (push)
作用:查看有哪些 Remote 和 Fetch / Push 地址
需要确认:
- 是否只有一个
origin - 当前是否连接 GitHub
git branch -vv
// 返回结果示例
* master a613401 [origin/master] update
作用:查看当前所在分支、是否正常跟踪远程分支
需要确认:当前分支是否正常跟踪 origin/master 或 origin/main
git remote show origin
// 返回结果示例
* remote origin
Fetch URL: https://github.com/ZaiHuaOvO/micERP.git
Push URL: https://github.com/ZaiHuaOvO/micERP.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
作用:查看 origin 的完整信息,包括:Fetch URL、Push URL、HEAD Branch、Pull 默认来源、Push 默认目标
git config --get-all remote.origin.pushurl
// 返回结果示例
空(什么都没有)
作用:检查是否已经配置多个 Push 地址。
如果你和我一样只有单个 GitHub 推送地址并且也是 master 分支,那么就可以安心添加另一条 Push 地址了。
什么样的 Git 仓库不可以这么做
已经配置多个 Push 地址:继续添加可能会覆盖已有配置。
存在多个 Remote:需要考虑每个 Remote 的作用
当前分支没有 Upstream:没有分支就不存在“额外添加另一个分支”
推送流程
推送方式
在云效的空代码库中,已经给了几种推送方式:
为了标识身份,建议先完成 Git 全局设置
git config --global user.name "再花猫猫头" git config --global user.email ""方式一:克隆仓库
git clone https://codeup.aliyun.com/xxx/xxx.git cd micERP touch README.md git add README.md git commit -m "add README" git push -u origin HEAD方式二:已有文件夹或仓库
cd existing_folder git init git remote add origin https://codeup.aliyun.com/xxx/xxx.git git add . git commit git push -u origin HEAD方式三:导入代码库
git clone --bare https://git.example.com/your/project.git your_path cd your_path git remote set-url origin https://codeup.aliyun.com/xxx/xxx.git git push origin --tags && git push origin --all
第一种方式适用于拷贝代码到本地
第二种方式适用于将一个没有远程分支的仓库推送到云效
第三种方式就适用于我们这种情况,将已有远程分支的仓库导入到云效,故选择第三种。
HTTPS配置
我们首先要点击头像-个人设置-HTTPS密码,在页面中配置好账号和密码
图中是我已经配置好的结果,第一次配置不需要绑定邮箱
执行推送
我们要先把仓库先推送到云效,将仓库的 origin 设置为云效。
git remote set-url origin https://codeup.aliyun.com/xxx/xxx.git
然后执行
git push -u origin master
这时候Git会弹窗信息验证,输入刚刚设置好的克隆账号和克隆密码
注意不要开输入法…我就这样错了两次还纳闷为什么…
到这一步如果一切顺利,你就已经可以在云效中看到自己的代码了。
给 origin 增加 GitHub Push 地址
执行:
git remote set-url --add --push origin https://codeup.aliyun.com/xxx/xxx.git
然后:
git remote set-url --add --push origin https://github.com/ZaiHuaOvO/xxx.git
--push 不会影响 Fetch 地址,它只是告诉 Git:"Push 时,同时推送到这些地址。"
检查配置是否成功
执行:
git remote show origin
理想情况下会看到类似:
Fetch URL:
https://codeup.aliyun.com/...
Push URLs:
https://codeup.aliyun.com/...
https://github.com/ZaiHuaOvO/xxx.git
你也可以手动访问仓库地址 Commits 进行验证。