git clone 的项目保持与原项目的同步更新
从码云上 clone 了一份项目代码进行二次开发,并在公司的 gitlab 上创建新项目提交。现在多想了一步,能不能让代码保持与原项目的一个同步更新呢,就像是多个人开发一样,定期将更新的内容同步到主干上。
网上查询了一圈,感觉过程跟 git fork 的代码保持更新也差不多。这里以 JSH_ERP 项目作为示例
1. 先 clone 代码
$ git clone https://gitee.com/jishenghua/JSH_ERP.git
# 查看远程仓库链接
$ cd JSH_ERP
$ git remote -v
origin https://gitee.com/jishenghua/JSH_ERP.git (fetch)
origin https://gitee.com/jishenghua/JSH_ERP.git (push)
2. 设置 origin 和 upstream
$ git remote rename origin upstream
# 按照公司 gitlab 创建的新项目提示添加 origin 并提交代码
git init --initial-branch=main
git remote add origin git@gitlab.com:mygit/mypro.git
git add .
git commit -m "Initial commit"
git push -u origin main
此时会报错:警告:re-init:已忽略 --initial-branch=main
。
将提交 origin 代码改成以下方式可正常提交:
git init
git checkout -b main
git remote add origin git@gitlab.com:mygit/mypro.git
git add .
git commit -m "Initial commit"
git push -u origin main
如果 push 过程中报错:fatal: the remote end hung up unexpectedly Everything up-to-date
说明推送文件过大无法推送。这主要是因为使用了 http[s] 协议,将其换成 git 协议推送可以成功。
此时查看远程仓库链接
$ git remote -v
origin git@gitlab.com:mygit/mypro.git (fetch)
origin git@gitlab.com:mygit/mypro.git (push)
upstream https://gitee.com/jishenghua/JSH_ERP.git (fetch)
upstream https://gitee.com/jishenghua/JSH_ERP.git (push)
3. 同步更新原项目分支代码
假设我们想同步的是 dev 分支:
$ git fetch upstream
$ git rebase upstream/dev
$ git push origin dev
参考 Github fork的项目如何和原项目同步更新
git怎么修改origin
执行git init --initial-branch=main报错 - 简书
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。