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


    当要push代码到git时,出现提示:

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

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

    问题解决:
    (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
    

    推荐阅读:Dealing with non-fast-forward errors

  • 相关阅读:
    Java程序员必知的8大排序(转载)
    Eclipse快捷键大全(转载)
    Java强引用、 软引用、 弱引用、虚引用(转)
    java数据类型二(转)
    为什么静态成员、静态方法中不能用this和super关键字(转)
    POJ 2002
    POJ 3126的教训
    POJ 3349
    POj 1105解题报告
    POJ 3278
  • 原文地址:https://www.cnblogs.com/xym4869/p/13364957.html
Copyright © 2020-2023  润新知