目录
错误内容
- # 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都无法完成。
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操作,操作如下:
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