在使用git进行代码发布的时候,总会遇到一些不顺利的事情, 例如本地有未推送的代码,但是远程已经存在其他推送的记录, 并且比本地的更新,还有其他更多乱七八糟的问题, 那么下面就简单说明一下其中案例的解决方案。 对于git的配置请看这篇:Gitee码云从新建仓库到免密钥推送完整教程,教你如何走上git开发之路
准备条件:
终端模拟场景终端1先拉取再修改本地代码文件:main.py,保持修改前与远程代码一致终端2直接修改本地代码文件:mail.py,即使远程有更新也不进行拉取可以看出,此时拉与推都是没问题的。
首先终端1和二同时拉取远程代码,然后终端1推送完成之后,终端2没有在终端1的最后一次推送进行拉取就直接修改本地代码,然后提交,就会遇到下面这个情况。
[root@openeuler python_spzx]# bash push.sh "测试" warning: 不建议在没有为偏离分支指定合并策略时执行 pull 操作。 您可以在执行下一次 pull 操作之前执行下面一条命令来抑制本消息: remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 展开对象中: 100% (3/3), 278 字节 | 69.00 KiB/s, 完成. 来自 gitee.com:faith01238/python_spzx 6ea73f3..1a86516 master -> origin/master 更新 6ea73f3..1a86516 error: 您对下列文件的本地修改将被合并操作覆盖: main.py 请在合并前提交或贮藏您的修改。 正在终止 [master 34a4270] 测试 1 file changed, 1 insertion(+), 1 deletion(-) To gitee.com:faith01238/python_spzx.git ! [rejected] master -> master (non-fast-forward) error: 推送一些引用到 'gitee.com:faith01238/python_spzx.git' 失败 提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。 提示:再次推送前,先与远程变更合并(如 'git pull ...')。详见 提示:'git push --help' 中的 'Note about fast-forwards' 小节。如果不管本地做的更改,可以使用下面的方法进行强制与远程同步,并删除本地多余内容。
从远程拉取最新的代码 不merge
git fetch --all使用指定分支的代码(此处master,请根据实际需求进行修改)强制覆盖代码
git reset --hard origin/master从远程拉取最新的代码 自动merge
git pull执行过程如下:
root@openeuler python_spzx]# git fetch --all 正在获取 origin [root@openeuler python_spzx]# git reset --hard origin/master HEAD 现在位于 1a86516 测试 [root@openeuler python_spzx]# git pull 已经是最新的。然后看一下本地代码与远程代码是否一致 接着,修改本地再推送 然后看远程数据:
此时,问题解决。