ChatGPT解决这个技术问题 Extra ChatGPT

在 Git 中推送提交时消息“src refspec master does not match any”

我克隆我的存储库:

git clone ssh://xxxxx/xx.git 

但是在我更改了一些文件并 addcommit 它们之后,我想将它们推送到服务器:

git add xxx.php
git commit -m "TEST"
git push origin master

但我回来的错误是:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'
@Marco那不是重复的。那是关于将本地分支推送到远程分支的一个非常具体的问题。这个是关于初始化一个 repo 并将其推上去的。它们产生相同的错误,但产生该错误的原因和修复完全不同。另外,sinoohe,您应该接受一个答案。可能是第一个,因为它回答了问题并帮助了 350 多人。
希望这篇文章对某人有用-samranga.blogspot.com/2015/07/…即使尝试从本地已经存在的项目创建 git BitBucket 存储库,也可以弹出问题中的错误
Git 让另一个简单的任务变得困难。 Git 开发人员应该在他们的 SDLC 循环中使用 Stack Overflow 作为反馈。超过 850,000 人应该指出 Git 的工作流程存在严重问题。他们需要聘请 UX 专家,因为他们显然无法靠自己的方式正确解决问题。
如果您没有使用点或某些文件添加 git add,也会出现此错误。
最近 Github/Git 没有默认的“master”分支。 “master”已更改为“main”分支。所以这可能是这个错误的一个可能原因。

C
Coder

也许你只需要承诺。当我这样做时,我遇到了这个:

mkdir repo && cd repo
git remote add origin /path/to/origin.git
git add .

哎呀!从未承诺!

git push -u origin master
error: src refspec master does not match any.

我所要做的就是:

git commit -m "initial commit"
git push origin main

成功!


不要盲目地按照这一步,看看@Vi提到了什么,然后修改你的push命令来更正ref。
此错误最可能的原因是所有文件都未跟踪且尚未添加。 git add --all 如果您希望添加所有文件或者您可以有选择地添加文件。然后是 git commit -m "Initial comment"git push origin master。这肯定会奏效。
修复了不同的问题,这很好,但不是这个实际问题的真正答案。
git commit -m 'initial commit' 应该用双引号引起来。 'git commit -m "initial commit",至少在 Windows 上。
另一个可能的原因:您实际上没有一个名为 master 的分支
P
Philharmonic HE

试试 git show-ref 看看你有什么参考。有裁判/负责人/大师吗?

由于最近的“在 GitHub 中用 main 替换 master”操作,您可能会注意到有一个 refs/heads/main。因此,以下命令可能会从 git push origin HEAD:master 更改为 git push origin HEAD:main

您可以尝试 git push origin HEAD:master 作为更独立于本地参考的解决方案。这明确说明您希望将本地 ref HEAD 推送到远程 ref 主控(请参阅 git-push refspec 文档)。


我的主分支不在提交之上!所以我创建了一个分支,它位于所有分支的末尾,并将它们推送到服务器:
git checkout -b 测试分支; git push origin testbranch:master
git show-ref 展示了我的分支; git push origin HEAD:<branch> 为我工作。
你刚刚救了我 Vi。感谢您的git push origin HEAD:master。但是为什么像 git push --force origin master 这样的东西不起作用?
master 现在更改为 main
P
Peter Mortensen

删除本地计算机上的所有文件后,我也遇到了类似的错误,我必须清理存储库中的所有文件。

我的错误信息是这样的:

error: src refspec master does not match any.
error: failed to push some refs to 'git@github ... .git'

通过执行以下命令解决了这个问题:

touch README
git add README

git add (all other files)
git commit -m 'reinitialized files'
git push origin master --force  # <- caution, --force can delete others work.

其他答案并没有解决我遇到的问题(例如,我已经提交并且仍然有这个错误),但是做一个 git push origin BRANCH --force 工作。谢谢!
请参阅this earlier answer。我怀疑您需要添加一个文件,因为 git 不会跟踪空目录。
push --force 也可能完全摧毁同事的辛勤工作。由它添加警告。
这解决了我的问题。我认为 git add 做到了。虽然一开始 git 无法识别事物,但这可能就是我遇到问题的原因。 git add 命令解决了我的问题。在那之后,我也能够在没有 --force 的情况下推动。谢谢阿约
P
Peter Mortensen
git push -u origin master
error: src refspec master does not match any.

为此,您需要按如下方式输入提交消息,然后推送代码:

git commit -m "initial commit"

git push origin master

成功推送给master。


我检查了它的工作。请忽略 -u 选项然后尝试
这里的问题似乎与 OP 的完全不同......但似乎包括我在内的许多人都有这个问题。
g
grg

对我来说,我必须确保在服务器(附加在 ~/.ssh/authorized_keys)和 GitHub/Bitbucket(添加到我在 GitHub 上的 SSH 密钥中)正确配置了 公钥或 Bitbucket)——它们需要匹配。然后:

git add --all :/
git commit -am 'message'
git push -u origin master

P
Peter Mortensen

在我只添加了一个目录之后,我发现这发生在一个全新的存储库中。

一旦我添加了一个文件(例如一个自述文件),Git push 就很好用了。


这可能有效,因为 git 实际上并不跟踪目录,只跟踪文件。因此,如果目录为空,git 不会实际添加它。
OP 添加了一个文件(xx.php),因此在这种情况下这不是问题,即使在其他情况下这可能是一个问题,并且添加一个文件可以解决该问题。
这样一个令人沮丧的问题的简单解决方案。我正在测试 repos 的创建和克隆,并创建了空目录而不是文件。
8 年后,这让我有些头疼!
在我的情况下, 1--> git init 2---> git add origin....etc 3---> git git push -u origin master ===>然后我得到了上述错误。 ===>然后我执行了以下2个命令,它消失了。 ---> git add * ---> git commit -m "Some message" --->git git push -u origin master ===>对我来说工作得很好,就我而言。
E
Eric Leschinski

缺少或跳过 git add .git commit 可能会导致此错误:

git push -u origin master
Username for 'https://github.com': yourusername
Password for 'https://yourusername@github.com': 
error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/yourusername/foobar.git'

要修复它,请重新初始化并遵循正确的顺序:

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master

没错,业务端具体是git remote add __REMOTE_NAME__ __URL_OR_SSH__,上面的远程名称是“origin”
他们在他们的问题中添加并承诺,因此即使这对其他人有所帮助,这也不是问题所在。
但是,由于此处使用了 -u 选项,此答案确实有效。
git *create remote 是什么?
W
Werner

要修复它,请重新初始化并遵循正确的代码序列:

git init
git add .
git commit -m 'message'
git push -u origin master

t
tanius

当您在特定分支中并尝试推送另一个尚不存在的分支时,也会发生这种情况,例如:

$ git branch
* version-x  # you are in this branch
  version-y

$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'origin_address'

哈哈。我试图推送到原始主机,但该分支不存在。它被称为起源稳定。
-u 可能在这里有所帮助。
上面这种情况,问题当然是没有本地分支master,所以不能push。您要么想要推送现有分支,要么创建主分支然后推送它,如下所示:git checkout -b master; git push -u origin master;
当我拼错分支名称时,我才得到这个。
我当地的分支机构拼写为“sheduler”,而我正在做 git push origin scheduler。哈!一封信将在编程中杀死您。哈哈
S
Saurabh Singh

确保您首先添加,然后提交/推送:

喜欢:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

J
Jin Kwon

我遇到了同样的问题,我使用了 --allow-empty

$ git commit -m "initial commit" --allow-empty
...
$ git push
...

补充

此问题的主要原因之一是某些 Git 服务器(例如 BitBucket)在克隆新存储库时没有初始化其 master 分支。


这是唯一真正有效的。
A
Arslan Ahmad khan

几天前我遇到了同样的问题。

如果您现在(2020 年)创建了一个新的存储库,那么默认分支是 GitHub 上的主分支。

您现在可以在您的存储库分支中查看 GitHub。

您还可以通过运行以下命令检查终端上的分支:

git branch

所以这就是为什么你需要运行

git push origin main

代替

git push origin master

祝你好运


谢谢你的帮助。这真的很有帮助。
上面的一切都没有帮助,但最终还是有帮助。相同的错误消息可能是许多不同的问题。
A
Aswin Barath

面临的问题

当我在 GitHub 上创建一个新存储库并将其与我拥有的客户端计算机中的 react-app 链接时,我遇到了同样的问题。

我使用了以下步骤:

问题前使用的命令

git init
git commit -m "first commit"
git branch -M main
git remote add origin "_git repository link here_"
git push -u origin main

我的错

但是你可以看到我的错误是没有使用 git add . 命令我犯了这个错误,因为我已经有了 README.md 文件,并且 GitHub 在创建存储库时用基本命令指导我们。

我的解决方案

我的解决方案是在 git init 命令之后使用 git add .

以相同的顺序使用以下命令集来解决该问题:

git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin "_git repository link here_"
git push -u origin main

运行 git add .,然后运行 git commit -m "first commit",然后再次推送
git branch -M main 为我工作。
这个 git branch -M main 很重要,这就是它对我不起作用的原因。如果您不放任何东西,它需要 master
5
5 revs, 2 users 88%

两种可能性:

1- 要么您忘记包含 .gitignore 文件。

以下是所需的所有步骤:

在远程创建一个空的 Git 存储库,在本地为您的项目创建 .gitignore 文件。 GitHub 在此处为您提供了示例列表启动终端,并在您的项目中执行以下命令: git remote add origin YOUR/ORIGIN.git git add 。 git commit -m "初始提交或第一次提交的任何消息" git push -u origin master

2- 或者您正在尝试创建一个新的 Github 项目。

Github 将 master 替换为 main 作为默认分支名称。要解决此问题:

在您的本地项目上:删除 .git 文件夹(如果存在)通过在您的项目中启动以下命令来重新创建一个干净的存储库:

在终端:

git init

git add .

git commit -m "YOUR FIRST MESSAGE HERE"

git branch -M main

git remote add origin _GIT_LINK_TO_PROJECT_HERE_

git push -u origin main

这是如何与.gitignore 相关的错误?!如果它是相关的(我非常怀疑),你应该在你的答案中解释它。谢谢
谢谢,我错过了忽略文件。
b
bleistift2

对我来说,以下工作可以移动未跟踪的文件:

git add --all

接下来,我按照类似的步骤

 git commit -m "First commit"

然后,

git remote add origin git@github.....

最后但是同样重要的:

git push -u origin master

执行此操作时,Windows 安全将弹出询问您的用户名和密码。


你的意思是 `git add --all` 有两个破折号吗
L
Lucas

您可能在 git init 命令之后忘记了命令 git add .


i
iamtheasad

在 GitHub 更新 01.10.20 之后,您应该使用 main 而不是 master。

像这样做...

在 GitHub 上创建存储库删除本地目录中现有的 .git 文件转到本地项目目录并键入 git init git add 。 git commit -m"My First Commmit" 现在检查您的分支名称,它将是您本地项目中的主控 git remote add origin 然后输入 git remote -v git push -f origin master Now检查 github 存储库,您将看到两个分支 1. main 2. master 在您的本地存储库中创建新分支,分支名称将是 main git checkout main git merge master git pull origin main git push -f origin main

注意:从 01.10.20 github 决定使用 main 而不是 master 分支使用默认分支名称


GH 首席执行官 Nat Friedman 在 Twitter 上针对#BLM 运动发表的原始声明。 twitter.com/natfriedman/status/1271253144442253312
P
Peter Mortensen

只需添加一个初始提交。按着这些次序:

混帐添加。

git commit -m "初始提交"

git push 起源大师

这对我有用。


A
Anthony

我的问题是“主”分支尚未在本地创建。

一个快速

git checkout -b "master"

创建了主分支,此时,快速

git push -u origin master

将工作推送到 Git 存储库。


K
Kai - Kazuya Ito

2022 年 2 月更新:

如果您的分支是“主”:

https://i.stack.imgur.com/4xAFN.png

运行此命令:

git push origin main

如果您的分支是“主”:

https://i.stack.imgur.com/AhDrP.png

运行此命令:

git push origin master

S
Sankalp Gour

也许分支是主而不是主

尝试

git push origin HEAD:main git push origin main


这是我的问题。尝试了很多东西,然后意识到它是主要的而不是大师。
A
Alamin

我也遇到过同样的问题

解决了我的问题。

只做一个分支:

git checkout -b "master"

在那之后

git push -u origin master

砰。

希望它会得到解决。


我遇到了同样的问题,并意识到分支在 main 上。然后我遵循了这个并得到了解决。
同样在这里。谢谢!
u
user993563

当您添加文件,忘记提交和推送时,就会发生这种情况。所以提交文件然后推送。


x
xuri

这只是意味着你忘了做初始提交,试试

git add .
git commit -m 'initial commit'
git push origin master

请写 git commit -m "initial commit"
P
Peter Mortensen

首先, git add 。二、git commit -m "message" 三、git push origin 分支

请检查拼写错误,因为这也可能导致该错误。


P
Peter Mortensen

我也遵循了 GitHub 的指示,如下所示,但我仍然遇到了与 OP 提到的相同的错误:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

对我来说,我希望这对一些人有所帮助,我在我的 MacOS 上推送了一个大文件 (1.58 GB on disk)。在复制粘贴上面建议的代码行时,我并没有等待我的处理器实际完成 add . 过程。因此,当我输入 git commit -m "message" 时,它基本上没有引用任何文件,也没有完成将我的代码成功提交到 GitHub 所需的任何操作。

证明这一点的是,当我键入 git status 时,我通常会为添加的文件获得绿色字体。但一切都是红色的。好像根本没有添加一样。

所以我重做了步骤。我输入了 git add . 并等待文件添加完毕。然后我完成了接下来的步骤。


P
Peter Mortensen

如果您在第一次推送之前忘记提交,就会发生这种情况。赶紧跑:

git commit -m "first commit"

P
Peter Mortensen

要检查当前状态,git status

并遵循以下步骤:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

P
Peter Mortensen

当我错过跑步时,我遇到了同样的问题:

git add .

(您必须至少有一个文件,否则您将再次收到错误消息。)


P
Peter Mortensen

如果在分离 HEAD 模式下工作时遇到此错误,您可以执行以下操作:

git push origin HEAD:remote-branch-name

另请参阅:Making a Git push from a detached head

如果您位于与远程分支不同的本地分支上,则可以执行以下操作:

git push origin local-branch-name:remote-branch-name