Git错误non-fast-forward的解决方法

这篇具有很好参考价值的文章主要介绍了Git错误non-fast-forward的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、问题描述
当要push代码到git时,出现提示:

$ git push origin master
To ../remote/
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '../remote/'

2、分析问题
Dealing with “non-fast-forward” errors:(From time to time you may encounter this error while pushing)
    To prevent you from losing history, non-fast-forward updates were rejected. Merge the remote changes before pushing again. See the 'non-fast forward' section of 'git push --help' for details.
    This error can be a bit overwhelming at first, do not fear. Simply put, git cannot make the change on the remote without losing commits, so it refuses the push. Usually this is caused by another user pushing to the same branch. You can remedy this by fetching and merging the remote branch, or using pull to perform both at once.
     In other cases this error is a result of destructive changes made locally by using commands like git commit --amend or git rebase. While you can override the remote by adding --force to the push command, you should only do so if you are absolutely certain this is what you want to do. Force-pushes can cause issues for other users that have fetched the remote branch, and is considered bad practice. When in doubt, don’t force-push.

上面这段是从博主那摘抄的(2012年的文章),其实这和上面那张图的内容有很多相似之处,因为技术的发展和经验的积累,现在的git的功能也越来越完善,它不仅提示出错(具体原因),还会给出一些建设性意见,以供你参考。

我们知道git的一大好处就是可以团队合作开发,但是这就涉及到一个问题,怎么保证远程仓库的一致性?这也是它不得不处理的一个重要问题!

我们可以这样理解这个问题就是:别人上传到远程仓库后,你没有及时的同步(、拉取)到本地,但是你同时又添加了一些内容(提交),以致于你在提交时,它会检测到你之前从远程仓库拉取的时候的仓库状态和现在的不一样。于是,它为了安全起见拒绝了你的提交(然后就报了这个错误)。

 再者我们可以简单来理解这个问题:我们从字面上理解“non-fast-forward”,可以认为是“不能快速前进”,我觉得有个广告说得好:车到山前必有路……但是路有好走的路,也有不好走的路;而遇到不好走的路时(比如前方遇到拦路石,或者是前方出现岔路),我们就不得不停下来思考“以后的路该怎么走”了,我们“不仅要低头赶路,也要抬头看路”就是这个意思。

“不能快速前进”的原因是因为路不一样了,变得不好走了;体现在git里面就是提交历史出现分叉,主线不再是一条直线,而是在前端出现了分叉,git不知道该如何前进,所以报错了,让你来觉得走哪条路!

3、解决问题
于是你有2个选择方式:

3.1、先合并之前的历史,再进行提交——提倡使用
(1)先把git的东西fetch到你本地然后merge后再push

$ git fetch origin master

$ git merge origin FETCH_HEAD 

先抓取远程仓库的更新到本地,然后与你的本地仓库合并,(如果有冲突就要解决冲突后再合并,冲突问题比较复杂,这里就不详细说了),这样就可以使远程仓库和你本地仓库一致了,然后就可以提交修改了。

(2)这2句命令等价于
$ git pull origin master

但是使用git fetch + git merge 更加安全。

(3)git pull --rebase origin master

重定基,可以是历史更加统一,即使提交历史趋向于一条直线。

补充:他们之间的关系

git pull = git fetch + git merge FETCH_HEAD 

git pull --rebase =  git fetch + git rebase FETCH_HEAD

3.2、丢弃之前的历史,强推——谨慎使用
强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

$ git push -f  或者 $ git push --force

官方文档提示:This flag disables these checks, and can cause the remote repository to lose commits; use it with care.(即:此标志禁用这些检查,并可能导致远程存储库丢失提交;小心使用。)

俗话说得好:“强扭的瓜不甜”,强制(暴力)执行总会产生一些不好的结果,应慎重考虑是否使用该命令!!!

不仅在此处,在平时使用时,也要非常注意,除非你真的是想覆盖远程仓库(你真的知道自己在干嘛!),不然最好不要强制执行。

推荐阅读(英文):Dealing with non-fast-forward errors

2019年7月28日10:02:13 更新部分内容。
————————————————
版权声明:本文为CSDN博主「秦时明月之君临天下」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41287260/article/details/89742151文章来源地址https://www.toymoban.com/news/detail-756727.html

到了这里,关于Git错误non-fast-forward的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git基础: (fetch first)和(non-fast-forward)问题详解

    当在本地main分支上向远程main仓库push时发生如下问题 To github.com:ReturnTmp/study.git  ! [rejected]        main - main (fetch first) error: failed to push some refs to \\\'github.com:ReturnTmp/study.git\\\' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repos

    2024年02月11日
    浏览(35)
  • git push报错 ! [rejected] dev -> dev (non-fast-forward)

    问题 git push 进行代码提交时报错 ! [rejected] dev -> dev (non-fast-forward) 原因 是本地库和远程库没有同步导致无法提交合并,冲突导致无法push 解决办法 情况一:第一次提交,远程喝本地分支没有关联,在原有命令后加 --allow-unrelated-histories 情况二:已经进行git操作,有了关联的

    2024年02月15日
    浏览(44)
  • git push报错:![rejected] master -> master(non-fast-forward) error:failed to push some refs to XXX

    背景 本地git库,要push到gitlab上,执行完如下命令后报错: 报错信息为: 原因 从本地代码创建远程仓库的时候,添加了README.md,但本地仓库中并没有该文件。 解决方案 添加忽略不相干的历史选项,将远程仓库中的文件重新拉取到本地,这样本地文件会出现README.md: 之后再

    2024年02月04日
    浏览(49)
  • master -> master (non-fast-forward) 问题解决

    1、问题描述 当要push代码到git时,出现提示: $ git push origin master To ../remote/  ! [rejected]        master - master (non-fast-forward) error: failed to push some refs to \\\'../remote/\\\' 2、分析问题   因为技术的发展和经验的积累,现在的git的功能也越来越完善,它不仅提示出错(具体原因),还会给

    2024年02月08日
    浏览(42)
  • git push 到gitlib提示! [rejected] master -> master (non-fast-forward) error: failed to push some refs t

    一、git push到gitlab提示,大概意思是本地库和远程库没有同步导致无法提交合并,冲突导致无法push。 二、解决方案 三、操作界面,可以push到gitlab了。 三、參考文章 https://www.cnblogs.com/wml-it/p/15585052.html

    2024年02月06日
    浏览(44)
  • ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to

    产生场景 创建仓库上传代码时,发现git的一个报错,意思是本地和远程不太一样(第一次提交)。 原因是我们在创建仓库是创建了模板和.git忽略文件,这样使得远程和本地内容不太一样。 我们只要在正常上传仓库流程push之前把远程仓库内容拉取到本地来。 解决方案 总结:

    2024年02月16日
    浏览(42)
  • Git pull报 fatal: Not possible to fast-forward, aborting的解决办法

    1. 问题场景 本人使用公司的开发机Mac, 发现在Mac 机上pull代码时总会出现“fatal: Not possible to fast-forward, aborting”。 开发流程:基于release拉取一个feature分支,然后在feature分支上进行开发,再把feature分支往master合并,如果有冲突先git pull 一下,然后解决冲突进行push。  (rele

    2023年04月08日
    浏览(29)
  • Git Clone错误解决:GnuTLS recv error (-110): The TLS connection was non-properly terminated.

    错误提示: 到此问题解决,可以顺畅下载。

    2024年02月13日
    浏览(29)
  • git报超时错误解决方法

    在使用git 从远程仓库推送或者拉取时,经常会出现超时错误,导致该错误的原因有很多,在查阅多篇博客,并实践后,总结初以下通用方法,能解决99%的问题. 第一种方法:关闭SSl验证 在git bash输入 注意:两条命令都要输入 第二种方法:关闭全局代理 在git bash 输入 注意:两条命令都要输

    2024年02月07日
    浏览(31)
  • Git基础教程-常用命令整理:学会Git使用方法和错误解决

    目录 一、了解Git的基本概念 二、Git的安装和配置 Git的安装 Git的配置 用户信息 文本编辑器 差异分析工具 查看配置信息 三、Git的基本操作 基本原理 基本操作命令 基本操作示例 场景一:创建新仓库 场景二:拉取并编辑远程仓库 四、常见问题及解决方法 解决冲突 git add文件

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包