300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > git 提交时报错 error: failed to push some refs to ‘https://github.com/xxx/demo.git 解决方法

git 提交时报错 error: failed to push some refs to ‘https://github.com/xxx/demo.git 解决方法

时间:2021-12-12 04:17:52

相关推荐

git 提交时报错 error: failed to push some refs to ‘https://github.com/xxx/demo.git 解决方法

1. 前言

本文解决由于git 处于游离状态下不能提交代码的问题。文章由导致原因,解决方法和思考三个内容组成。

2. 问题复现

我们从远程仓库 clone 代码下来,进行需求开发,可能进行了以下步骤。

(1)git clone /xxx/demo.git

这时候将远程仓库的默认分支克隆下来了,本文中的默认分支时master分支,但是我需要基于feature分支或者其他分支进行开发。所以有接下来的动作。

(2)git checkout origin/newbranch1

将远程的 newbranch1 分支 checkout。问题就出现在这里。不管是记错命令还是因为不熟git都可能会出现这样的失误。

这个命令将导致git 的HEAD指向远程分支,是处于一个游离状态,如果只是看代码这个动作是OK的,但是要基于此进行开发那是有些问题的。通过git branch命令来看git的分支状态,可以看到HEAD detached at origin/newbranch1,如下图所示。

(3)然后你忙活了一天写了很多东西,熟练的git add、git commit、git pull,到git push origin xxx的时候出问题了:

error: src refspec newbranch1 does not match any.error: failed to push some refs to '/xxx/express-sequelize-mysql-demo.git'

怎么解决呢?

3. 解决方法

注意,一定要将修改的代码提交到本地仓库区,否则接下来的动作可能导致你的代码没了!

注意,一定要将修改的代码提交到本地仓库区,否则接下来的动作可能导致你的代码没了!

注意,一定要将修改的代码提交到本地仓库区,否则接下来的动作可能导致你的代码没了!

将修改的代码提交到本地仓库区,就是要执行git add . git commit动作。

接下来是解决问题的步骤了:

(1)新建本地分支git branch temp,新分支会记录你修改的代码,不能直接checkout到其他分支,不然你的代码要没有了。

(2)我们要提交代码到newbranch1分支(你想要提交代码的目标分支名称),那么执行git branch newbranch1

执行这一步,git会在本地仓库建立一个newbranch1的分支,并关联到远程仓库的newbranch1分支。

(3)切换到newbranch1分支,执行git checkout newbranch1

(4)将temp临时分支与newbranch1分支合并,git merge temp

(5)看看代码,是不是ok了,你会发现是的,没错了。那拉取一下git pull origin newbranch1,再git push origin newbranch1就提交上去了。

(6)删除本地临时分支,它没有价值了,git branch -d temp

到这里就全部解了,但还是要思考一下如何避免问题的出现。

4. 一些思考

我们如果要基于某个分支进行开发,不要执行2 -(2)中的git checkout origin/newbranch1命令,这将导致git指向游离状态,在一些多人协作的复杂场景下是需要用到了,但如果只是较为简单的小项目上我们可以这么做:

(1)git clone下来之后,通过git checkout newbranch1就能直接检出并切换到远程仓库的newbranch1分支了。这个方法的话,没有newbranch1会自动创建并切换到该分支。

(2)当然,还有个方法。就是通过git branch newbranch1创建分支,然后再切换到分支git checkout newbranch1

还是要拿个仓库动手试试才能明白,光看这个你就可能晕掉了,动手吧

5. 给作者加加油吧

对你有帮助的话,一杯咖啡让作者更有动力~ (click)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。