(转载)【状况题】怎么有时候推不上去...

Git推送失败详解
本文解析了在多人协作中遇到的Git推送失败问题,提供了解决方案,包括先拉再推、强制推送及创建新分支的方法。

偶尔在执行Push指令的时候会出现这个错误消息:

$ git push 
To https://github.com/xxx/dummy-git.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/xxx/dummy-git.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 push -u origin master)

这段消息的意思是在线版本的内容比你电脑里这份还要新,所以Git不让你推上去。

怎么造成的?
通常这个状况会发生在多人一起开发的时候,想像一下这个情境:

  1. Sherly跟Eddie两个人在差不多的时间都从Git Server上拉了一个资料下来准备进行开发。
  2. Sherly手脚比较快,先完成了,于是先把做好的成果推一份上去。
  3. Eddie不久后也完成了,但当他要推上去的时候发现推不上去了…

怎么解决?
解决方法算是有两招

第一招:先拉再推
因为你电脑里的内容是比较旧的,所以你应该先拉一份线上版本的回来更新,然后再推一次:

$ git pull --rebase
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/xxx/dummy-git
   37aaef6..bab4d89  master     -> origin/master
First, rewinding head to replay your work on top of it...
Applying: update index

或
$ git pull origin master
$ git push -u origin master

这里加了--rebase参数是表示“内容抓下来之后请使用Rebase方式合并”,当然你想用一般的合并方式也没问题。合并如果没发生冲突,接下来应该就可以顺利往上推了。

第二招:无视规则,总之就是听我的(误)
凡事总有先来后到,在上面的示例中,Sherly先推上去的内容,后推的人就是应该拉一个下来更新,不然照规定是推不上去的。不过这规则也是有例外,只要加上了--force或是-f参数,它就会强迫硬推上去,把Sherly之前的内容盖掉:

$ git push -f
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (19/19), 2.16 KiB | 738.00 KiB/s, done.
Total 19 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), done.
To https://github.com/xxx/dummy-git.git
 + 6bf3967...c4ea775 master -> master (forced update)

或
$ git push -u origin master -f

虽然关于这样的事情,但接下来你就要去面对Sherly,跟她解释为什么你把她的进度盖掉了。更多关于Force Push的说明,可参考「【状况题】听说git push- f这个指令很可怕,什么情况可以用它呢? 」章节介绍。

第三招: 若不想merge远程和本地修改,可以先创建新的分支:

$ git branch [name]
然后push
$ git push -u origin [name]

参考

push本地代码到github出错

Freekan 5.8 9月30日更新内容 1.修复了综艺栏目无播放源问 2.修改搜索失效问 3.更换最新解析接口 Freekan 5.8 8月24日更新内容 1.资源网接口更新 2.修复全网搜索 3.增加播放器加载广告二次元背景随机播放 4.更换最新解析接口 5.增加背景随机更换 6.关闭伦理片搜索限制 Freekan 5.6 8月12日更新内容 1.默认关闭首页缓存PS:小白懂 2.更新资源网接口为最新 3.增加首页尝鲜版块开关 4.修复手机版首页居中 5.增加全网电视台直播源 6.去除伦理片搜索限制 7.默认关闭会员收费限制 Freekan 5.0 7月知道多少号更新内容 1.修复搜索到问 2.修复全网搜索到问 3.修复首页尝鲜采集到问 4.修复后台采集资源站更新问 5.增加更多采集接口 6.增加更多直播接口 7.免费的程序!为什么要收费 Freekan 3.83 5月3日更新内容 1.后台所增两套模版 2.更改wapian模版的主颜色 3.播放页新增提示 5.直播加入批量添加功能 6.前端电影综艺动漫电视板块播放页加入猎你喜欢模块 7.首页公告下广告位显示 8.首页手机端友链显示 9.修复首页背景图片自动采集更换卡的问 10.修复手机wap页面居中问 11.去除后台授权码设置 12.后台新增检测更新 重点!如果安装的时候,安装向导页面出现错误,那么把地址后面的install/1改成install/2亲测OK! 评论刷新即可获取链接,源码里的install文件是有的,在根目录罢了,最好是用Apache环境来搭建
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值