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

目录

一、执行rebase操作

二、取消rebase操作


错误内容

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

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

一、执行rebase操作

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

// master指的是当前修改的分支,请修改当前你所修改的分支名称(不然会出人命的)
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

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
b021abd (HEAD -> zjk-prod-20230823, origin/zjk-prod-20230823) HEAD@{1}: pull origin zjk-prod-20230823 --rebase (pick): 添加白名单
da0275b HEAD@{2}: pull origin zjk-prod-20230823 --rebase (start): checkout da0275b5cb8a090239768a7e0f3c29b136a485d2
49b6fa0 HEAD@{3}: commit: 添加白名单
93e7e5e HEAD@{4}: pull: Fast-forward
b74993c HEAD@{5}: checkout: moving from ts_kp_20230411 to zjk-prod-20230823
1556aa1 (ts_kp_20230411) HEAD@{6}: pull: Fast-forward
f6af3a8 HEAD@{7}: pull: Fast-forward
7a94afa HEAD@{8}: pull: Fast-forward
c904469 HEAD@{9}: pull: Fast-forward
2c810f3 HEAD@{10}: pull: Fast-forward
27437d7 HEAD@{11}: pull: Fast-forward
11e6536 HEAD@{12}: pull: Fast-forward
915a77e HEAD@{13}: pull: Fast-forward
af187d5 HEAD@{14}: commit: 修改pom依赖,移除不必要的依赖
2edffd1 HEAD@{15}: pull origin ts_kp_20230411: Fast-forward
245bf31 HEAD@{16}: pull origin ts_kp_20230411: Fast-forward
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
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

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

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

git reset --hard af72411206738273c79b585270063dca88ccb67c
相关推荐
m0_464832369 分钟前
Linux服务器上安装git lfs命令
git
贩卖纯净水.8 小时前
白月光git
git·github
爱吃瓜的猹z12 小时前
git reset 几点疑问
git·源代码管理
悟空201618 小时前
001、Git开发流程规范
git
Li小李同学Li18 小时前
git学习【持续更新中。。。】
git·学习·elasticsearch
晨春计20 小时前
【git】
android·linux·git
念幽20 小时前
Git常用命令
git
神技圈子21 小时前
【git系列】git中的那些迷惑的术语以及概念详解
git
benben04421 小时前
Photoshop使用方法大全
git
ou.cs1 天前
git 删除远程分支的几种写法
git