Fatal Not possible to fast-forward, aborting

简介: git是一个很好用的版本管理工具,然而,有时候一些冲突还是让人很郁闷的。遇到过两次merge报错,是在不同的情形下出现的。

git是一个很好用的版本管理工具,然而,有时候一些冲突还是让人很郁闷的。

遇到过两次merge报错,是在不同的情形下出现的。

  • 本地分支各自commit之后,merge
  • 本地master分支 pull 远程master分支

下面记录以下两种情况的处理。


情形1:


我在本地仓库的两条分支devmaster同时开发,各自经过2个提交之后,merge报错:


fatal: Not possible to fast-forward, aborting.


如果git环境是中文的,那么这个错误信息就是这样的:


fatal:无法快进,终止。


问题的原因:

两个分之同时改了同样的地方,造成冲突。

按理,这种冲突也可以直接运行merge,然后手动解决这些冲突,再commit就行了。

然而,这次不行。

那就使用另一种合并分支的办法:rebase,我的目的是将dev合并到master,然后删除dev


git checkout master
git rebase dev


这时候报以下错误:


First, rewinding head to replay your work on top of it...
Applying: text:I am on master
Using index info to reconstruct a base tree...
M   a.txt
Falling back to patching base and 3-way merge...
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
error: Failed to merge in the changes.
Patch failed at 0001 text:I am on master
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".


这时候需要手动去修改冲突的地方:


<<<<<<< HEAD
I am on dev
I am on my mark.
=======
I am on master
>>>>>>> text:I am on master


然后,根据上面报错的提示信息,continue


When you have resolved this problem, run "git rebase --continue".
git rebase --continue 
a.txt: needs merge
You must edit all merge conflicts and then
mark them as resolved using git add


根据提示,add之后,再看下状态:


git add .
git status
rebase in progress; onto 6114f0b
You are currently rebasing branch 'master' on '6114f0b'.
  (all conflicts fixed: run "git rebase --continue")
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    modified:   a.txt


已经提示冲突都已经解决,可以继续了:


git rebase --continue
Applying: text:I am on master
Applying: commit 2nd
Using index info to reconstruct a base tree...
M   a.txt
Falling back to patching base and 3-way merge...
Auto-merging a.txt

这时候dev分支已经完全合并到了master分支上了:


git status
On branch master
nothing to commit, working tree clean


情形2:


其实处理方式跟情形1是一样的,只是稍有不同。


git pull origin master
From https://gitee.com/leonxtp/xxxxx
 * branch            master     -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.


这时候直接应用rebase解决:

git pull origin master --rebase
First, rewinding head to replay your work on top of it...
Applying: xxxxxx
Using index info to reconstruct a base tree...
M       gradle.properties
Falling back to patching base and 3-way merge...
Auto-merging path/of/file...
Auto-merging path/of/file...
Applying: yyyyyyy
...


关于merge和rebase的区别,可以参考:这篇文章。

个人总结起来就是:


merge不影响原来的commit,并会新增一个合并的commit。

rebase是将目标分支插入到两个分支的共同祖先与当前分支的最后面(不是最新)之间,并且修改当前分支原来的commit,但不会增加新的commit。

问题解决参考SOF。


目录
相关文章
|
6月前
|
存储 安全 JavaScript
如何使用Set的add()方法添加元素?
如何使用Set的add()方法添加元素?
571 58
|
9月前
|
存储 安全 生物认证
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
750 62
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
|
机器学习/深度学习 测试技术 API
【Python-Keras】Keras搭建神经网络模型的Model解析与使用
这篇文章详细介绍了Keras中搭建神经网络模型的`Model`类及其API方法,包括模型配置、训练、评估、预测等,并展示了如何使用Sequential模型和函数式模型来构建和训练神经网络。
493 1
|
前端开发 网络协议 Linux
通过hosts文件修改本地域名映射
hosts是一个没有扩展名的系统文件,windows系统里位置在 C:\Windows\System32\drivers\etc,macOS/Linux/iOS/Android位置在 /etc/hosts,其作用就是将一些常用的网址域名与其对应的IP地址建立一个映射关系
|
Kubernetes API Docker
在K8S中,节点状态notReady如何排查?
在K8S中,节点状态notReady如何排查?
|
Java API 数据库
深研Java异步编程:CompletableFuture与反应式编程范式的融合实践
【4月更文挑战第17天】本文探讨了Java中的CompletableFuture和反应式编程在提升异步编程体验上的作用。CompletableFuture作为Java 8引入的Future扩展,提供了一套流畅的链式API,简化异步操作,如示例所示的非阻塞数据库查询。反应式编程则关注数据流和变化传播,通过Reactor等框架实现高度响应的异步处理。两者结合,如将CompletableFuture转换为Mono或Flux,可以兼顾灵活性和资源管理,适应现代高并发环境的需求。开发者可按需选择和整合这两种技术,优化系统性能和响应能力。
354 1
|
安全 Linux Go
croc-文件传输工具
croc-文件传输工具
190 0
|
开发工具 git
解决pre-commit hook failed (add --no-verify to bypass)的问题
该文介绍了两种免去Git预提交钩子(pre-commit)的方法。一是直接进入项目.git/hooks目录,使用`rm -rf ./git/hooks/pre-commit`命令删除pre-commit文件。二是提交时添加`--no-verify`参数,如`git commit --no-verify -m&quot;XXX&quot;`,以跳过预提交检查。
860 0
|
存储 缓存 开发工具
Git 拉取合并代码流程和多人协同开发的问题解决方法
Git 拉取合并代码流程和多人协同开发的问题解决方法
717 0
|
编解码 Python
pandas读取csv错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte
pandas读取csv错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte
1682 0