美文网首页iOS开发
Git一个关于Push失败的两种解决方案

Git一个关于Push失败的两种解决方案

作者: 小小奶狗 | 来源:发表于2017-05-21 06:50 被阅读5640次

    远程创建了含有Readme的仓库, 本地初始化并添加了远程仓库后, push却失败了, 出现提示:

    $ git push origin dev

    To https://git.oschina.net/erchoc/laradock.git
    
     ! [rejected]        dev -> dev (fetch first)
    
    error: failed to push some refs to 'https://git.oschina.net/erchoc/laradock.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.
    

    问题(Non-fast-forward)的出现原因是: git仓库中已有一部分代码, 它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:

    1. 强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容: git push -f
    
    2. 先把git的东西fetch到你本地然后merge后再push
    
        - $ git fetch
        - $ git merge
    
    这2句命令等价于
    
    $ git pull 
    

    可是, 有时候还会出现问题:

    上面出现的 [branch "master"]是需要明确(.git/config)如下的内容
    
    [branch "master"]
    
        remote = origin
    
        merge = refs/heads/master
    
    这等于告诉git2件事:
    
    1,当你处于master branch, 默认的remote就是origin。
    
    2,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变
    
    如果不想或者不会编辑config文件的话,可以在bush上输入如下命令行:
    
    $ git config branch.master.remote origin 
    
    $ git config branch.master.merge refs/heads/master 
    
    之后再重新git pull下。最后git push你的代码吧。
    
    

    相关文章

      网友评论

      • 小橘果酱:查找了很多资料还是没能解决,看了这篇文章很轻松地解决了,谢谢作者
        小小奶狗:@你舅舅 能帮到你就行哦

      本文标题:Git一个关于Push失败的两种解决方案

      本文链接:https://www.haomeiwen.com/subject/lhjmxxtx.html