从码云上 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报错 - 简书

文章目录