03-----既上一篇往Gitlab推送已有项目(并且出现! [rejected] master -> master (fetch first)])

1 既上一篇往Gitlab推送项目(并且出现! [rejected] master -> master (fetch first)])

我们上一篇搭建了Gitlab环境后,创建了组和用户,并且将该用户拉进该组。当我将一个已有项目通过add,commit,最后push推送时,出现了! [rejected] master -> master (fetch first)]错误。
在这里插入图片描述

一开始很坑,百度操作后更种报错,导致越来越蒙,还以为新建的项目没有master分支(因为项目界面没有显示master,只有clone这个选项),需要添加ReadMe文件让它自动创建分支,最后发现是错误的,根本不需要这样操作让其显示master分支。

1.1 然后我就开始测试:
首先我在一个空目录添加一个ReadMe.txt文件,然后按照add,commit,push正常推送,结果发现是完全没问题的,推送之后gitlab页面就显示了master分支。但是我不知道我上面为啥推送我的项目时会出现错误,而推送ReadMe.txt却不会,它们不也是相当于已有项目吗?

1.2 继续测试
接着将上面测试用的本地仓库目录(有ReadMe.txt文件的目录)删掉,并且使用相关命令将远程库中的ReadMe.txt也删掉。然后去到已有项目目录中,继续push推送,结果就出现了上述截图的问题。

然后我也不理它为啥会这样了,我测试过出现这种情况有:远程库多了一个ReadMe而本地是一个已有项目。或者远程库没有ReadMe而本地也是一个已有项目。具体原因也不知道是什么,说白了就是因为本地仓库和远程仓库不一致。
下面我直接给出我的解决方案,看下图。

2 解决该错误

解决该错误,只需要两步即可,其它内容我只是记录起来,方便以后可能会出现错误干扰的因素,方便快速排查。

2.1 先拉取远程库到本地进行合并
git pull --rebase,这里表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把本地当前分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到本地当前分支上。
关于rebase的详解,可以看这篇文章(git rebase简介(基本篇)),简单易懂。

git pull --rebase origin master

结果如下:
在这里插入图片描述

2.2 重新推送

git push origin master

结果如下:
在这里插入图片描述

页面可以看到推送的结果。
在这里插入图片描述

3 注意

我在创建新的项目的时候,我将开发者的权限改为了所有者,不知道会不会影响到出现这个[rejected] master -> master (fetch first)]错误后,按上面的处理,是否会影响其推送成功的可能性。

因为我一开始也是这样处理的,但是没有成功(不过我的commit是前一晚提交的,不知道会不会成为错误因素,不过个人感觉可以忽略)。当然如果你成功推送了就不需要看这里了。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值