本问题有很多种情况,解决方法也很多,本文只针对笔者本人的自身诉求和情况,选择了一种适合我的解决方法。仅供参考。
1 问题描述
johnnyzen@XXDSSS MINGW64 /e/source_code/BigData/bdp_common_data_service (develop)
$ git push
To gitlab-bigdata.johnnyzen.cn:platform-software/bigdata/bdp_common_data_service.git
! [rejected] develop -> develop (non-fast-forward)
error: failed to push some refs to 'gitlab-bigdata.johnnyzen.cn:platform-software/bigdata/bdp_common_data_service.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
2 问题分析
笔者即小伙伴B
- Step0 小伙伴A、B:同步【远程仓库】的代码至【本地仓库】
git pull
- Step1.1 小伙伴A:修改【本地】的代码,并提交至【本地仓库】,再推送至【远程仓库】
修改本地代码
git add *
git pull
git commit -m "xxxx"
git push
- Step1.2 小伙伴B:修改【本地】的代码,并提交至【本地仓库】,但未推送至【远程仓库】
修改本地代码
git add *
git commit -m "xxxxx"
- Step2 小伙伴B:再次修改/新增/删除了【本地】的代码,并尝试推送先前提交的【本地仓库】代码至【远程仓库】
再次修改/新增/删除了【本地】的代码
git push
(此时,出现了本错误)
To gitlab-bigdata.johnnyzen.cn:platform-software/bigdata/bdp_common_data_service.git
! [rejected] develop -> develop (non-fast-forward)
error: failed to push some refs to 'gitlab-bigdata.johnnyzen.cn:platform-software/bigdata/bdp_common_data_service.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
3 解决方法
此问题有很多解决方法,答主仅提供了一种我个人的解决方式
3.1 解决方法
- Step3 检查哪些代码是Step2过程中修改的代码
那么这个时候,小伙伴B可以先
git pull
尝试同步一下远程仓库的代码,以检测是哪些文件出现了冲突。
git pull
-
Step4 将上述变更文件拷贝到源码工程外,并使得Step2过程无任何变更
-
Step5 同步远程仓库的代码,并在本地解决可能出现的冲突
git pull
[并解决可能出现的冲突]
- Step6 推送代码至【远程仓库】
git push
- Step7 还原Step4中备份的变更代码至源码工程内
3.2 其他解决思路
- 解决思路2
备份小伙伴B的2次变更文件,重置本地仓库的代码至Step0的状态,然后还原先前备份的变更文件后,再重新提交、推送至远程仓库
- ...