• 【Git】 git push 提示Not possible to fast-forward,无法提交也无法提交程序


    目录

    一、执行rebase操作

    二、取消rebase操作


    错误内容

    1. # git push
    2. To gitlab.aipark.com:aits/data-intergration.git
    3. ! [rejected] zjk-prod-20230823 -> zjk-prod-20230823 (fetch first)
    4. error: failed to push some refs to 'gitlab.aipark.com:aits/data-intergration.git'
    5. hint: Updates were rejected because the remote contains work that you do
    6. hint: not have locally. This is usually caused by another repository pushing
    7. hint: to the same ref. You may want to first integrate the remote changes
    8. hint: (e.g., 'git pull ...') before pushing again.
    9. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

    出现这个错误提示的原因是,你和其他人修改了同一个文件,而且别人比你先提交。所提此时你在本地执行git pull和git push都无法完成。

    一、执行rebase操作

    1、此时你需要执行下面命令(--rebase顾名思义,重新校准基础版本,将本地的基础版本更新为git上的基础版本)【注意执行这个命令之前你需要将本地代码全部暂存】

    1. // master指的是当前修改的分支,请修改当前你所修改的分支名称(不然会出人命的)
    2. git pull origin zjk-prod-20230823 --rebase

    2、一般情况下执行完这个,如果没有冲突,后面就可以正常进行更新和提交操作了。

    3、但是如果代码有冲突(别人和你修改了同一行代码,导致git不能自动合并),你会发现执行完之后本地版本变成了:5eec00e ±✚ >R,类似于这样的,说明rebase失败了,命令会提示哪些文件没有rebase成功,你需要手动将这些冲突合并。

    4、等待所有冲突文件修改完成,暂存所有文件。

    5、执行命令

    git rebase --continue

    执行命令后可以正常提交代码到 zjk-prod-20230823分支。

    6、如果依然存在冲突文件,重复步骤3、4、5,直到所有冲突修改完毕就可以了,最后就能正常提交更新了。

    步骤1的rebase命令,一定要注意,网上给出的都是git pull origin master --rebase,指的是将本地基础版本修改为远程分支zjk-prod-20230823最新版本,如果你本地修改的是develop或者其他分支,就会导致代码错乱,此时需要恢复rebase操作,取消rebase操作,操作如下:

    二、取消rebase操作

    git pull origin master --rebase操作是重新校准本地基础版本,如果修改了一半,想要取消如何操作,或者是发现自己rebase错了分支如何撤销。

    1、git pull origin master --rebase在冲突的情况下会出现(zjk-prod-20230823|REBASE 2/8)冲突的提示,说明有8个冲突文件需要修改。(如何解决这个问题,请移步这里)

    2、取消rebase执行命令

    git rebase --abort

    3、查看自己修改的rebase记录日志

    git reflog
    1. b021abd (HEAD -> zjk-prod-20230823, origin/zjk-prod-20230823) HEAD@{0}: pull origin zjk-prod-20230823 --rebase (finish): returning to refs/heads/zjk-prod-20230823
    2. b021abd (HEAD -> zjk-prod-20230823, origin/zjk-prod-20230823) HEAD@{1}: pull origin zjk-prod-20230823 --rebase (pick): 添加白名单
    3. da0275b HEAD@{2}: pull origin zjk-prod-20230823 --rebase (start): checkout da0275b5cb8a090239768a7e0f3c29b136a485d2
    4. 49b6fa0 HEAD@{3}: commit: 添加白名单
    5. 93e7e5e HEAD@{4}: pull: Fast-forward
    6. b74993c HEAD@{5}: checkout: moving from ts_kp_20230411 to zjk-prod-20230823
    7. 1556aa1 (ts_kp_20230411) HEAD@{6}: pull: Fast-forward
    8. f6af3a8 HEAD@{7}: pull: Fast-forward
    9. 7a94afa HEAD@{8}: pull: Fast-forward
    10. c904469 HEAD@{9}: pull: Fast-forward
    11. 2c810f3 HEAD@{10}: pull: Fast-forward
    12. 27437d7 HEAD@{11}: pull: Fast-forward
    13. 11e6536 HEAD@{12}: pull: Fast-forward
    14. 915a77e HEAD@{13}: pull: Fast-forward
    15. af187d5 HEAD@{14}: commit: 修改pom依赖,移除不必要的依赖
    16. 2edffd1 HEAD@{15}: pull origin ts_kp_20230411: Fast-forward
    17. 245bf31 HEAD@{16}: pull origin ts_kp_20230411: Fast-forward
    18. 5f66ed7 (origin/zjk-pre-1.0.0, zjk-pre-1.0.0) HEAD@{17}: checkout: moving from zjk-pre-1.0.0 to ts_kp_20230411
    19. 5f66ed7 (origin/zjk-pre-1.0.0, zjk-pre-1.0.0) HEAD@{18}: clone: from gitlab.aipark.com:aits/data-intergration.git

    4、观察日志中的记录,这里发现是在HEAD@{2}执行的rebase,然后执行恢复命令(注意是执行rebase命令的前一个步骤即:HEAD@{3})

    git reset --hard HEAD@{3}

    5、如果想回滚到其他提交点,可以通过命令查看,如查看最近2次提交

    git log -n 2
    1. # git log -n 2
    2. commit da0275b5cb8a090239768a7e0f3c29b136a485d2
    3. Merge: 93e7e5e af72411
    4. Author: aaa <aaa@xxx.com>
    5. Date: Thu Sep 7 05:34:14 2023 +0000
    6. Merge branch 'ts_kp_20230411' into 'test'
    7. minio上传图片接口
    8. See merge request aits/data-intergration!10
    9. commit af72411206738273c79b585270063dca88ccb67c (origin/test)
    10. Author: aaa <aaa@xxx.com>
    11. Date: Thu Sep 7 10:32:02 2023 +0800
    12. minio上传图片不用获取url

    如果想回退到指定提交点,执行对应的commit id

    git reset --hard af72411206738273c79b585270063dca88ccb67c

  • 相关阅读:
    集合框架:List系列集合:特点、方法、遍历方式、ArrayList,LinkList的底层原理
    数据可视化项目1
    北大肖臻老师《区块链技术与应用》系列课程学习笔记[7]比特币-分叉
    简单理解 Sentinel 滑动窗口实现原理
    docker下netcore内存dump
    gcc的学习及 版本太低如何在conda环境下重新进行安装
    优盘无法格式化?分享简单解决方法!
    碳排放预测模型 | Python实现基于机器回归分析的碳排放预测模型——数据清理和准备
    外卖配送小程序商城的效果如何
    虚拟内存 & I/O & 零拷贝总结
  • 原文地址:https://blog.csdn.net/smallbirdnq/article/details/132762588