git推送更新出现Updates were rejected错误

Updates were rejected because the remote...

Posted by Zhihao on 2020-04-10

The First Title Picture

本文介绍解决git推送更新出现的Error

方法1(推荐):

Updates were rejected because the remote contains work that you do not have locally

问题原因:远程分支上存在本地分支中不存在的提交,可以先fetch再merge,也就是pull,把远程分支上的提交合并到本地分支之后再push。

其实图中已经告诉我们要先fetch first了。

我们先来看看git fetchgit pull的概念:

问题07 Updates were rejected2

可以简单的概括为:

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

看到这里你就应该明白,你得先git fetch(进入.deploy/xxx.github.io文件夹里面操作才行,这里的操作目录就是你平时项目的目录)

然后git merge,这两步操作下来使得你remote的内容和本地的内容进行合并,这样下一步你再按照正常的推送进行推送。

1
2
3
git add .
git commit -m “update”
git push

基本到这里问题应该解决了。

方法2(暴力):

如果你实在搞不清楚git相关的原理,或者你已经不小心把你的本地repo或者remoterepo搞得乱七八糟,那么你可以直接清空的你的在线repo,重新push你的本地repo到服务端。

1
2
3
4
5
6
7
8
9
1.首先克隆(将服务端的repo整个克隆到本地任意的文件夹都可)
git clone https://github.com/ningmoon/ningmoon.github.io.git
2.然后在本地手动删除你想删除的文件夹
3.加载此文件夹下面所有的文件
git add .
4.提交代码
git commit -m “update”
5.push到GitHub上即可,这个时候服务端的相应文件都已经被删除
git push

...

...

00:00
00:00