Git致命错误:路径a没有意义。

21

我已经在电脑上有现有的代码,然后我注册了sourceforge帐户并启动了一个Git项目。现在我需要将本地项目发送到sourceforge远程空间。在sf上有说明页面:

第一次使用Git

cd miorep-code
git init
git commit -a -m 'Initial commit'
git remote add origin ssh://****/p/miorep/code
git push origin master

现有的代码库

cd miorep-code
git remote add origin ssh://****/p/miorep/code
git push origin master
如果我按照第一组指令操作,当我执行git commit -a -m 'Initial commit'时,会出现以下错误信息:

"Fatal: Paths with -a does not make sense"

如果我按照第二组指令操作,当我执行最后一个命令时,会出现以下错误信息:

error: src refspec master does not match any. error: failed to push some refs to 'ssh://**/p/ravenna/code'

请问在我的情况下正确的指令集是什么?为什么会出现这个错误?
3个回答

36

根据上述评论,这样做行不通,因为没有添加任何内容来进行提交。 - Andrew C
1
昨天我遇到了同样的问题。改为双引号后有所帮助。所有手动复制到git项目文件夹中的未跟踪文件都会自动添加到暂存区,然后提交。-a选项是这两个操作的组合。 - Tim Long
每个已经被跟踪的文件 - 根据上述评论,在git init之后没有被跟踪的文件。 - Andrew C
3
在Windows中,将单引号改为双引号可以帮助解决“致命错误:带-a选项的路径毫无意义”的问题。 - Tim Long
太棒了,解决了我的问题!这背后的解释是什么?难道cmd不像对待双引号一样对待单引号作为引号吗? - Jacob R

10

第一组指令毫无意义:

cd miorep-code
git init
git commit -a -m 'Initial commit'

在执行git commit之前,需要使用git add命令,因为否则git不知道您要提交的内容。
您的第二个错误是...

error: src refspec master does not match any. error: failed to push some refs to 'ssh://**/p/ravenna/code'

这意味着您尚未向本地存储库提交任何内容,因此没有要推送的master分支。

你想做的是:

cd miorep-code
git init
git add .
git commit -m 'initial commit'
git push origin master

请注意,这与您的第一组指令几乎完全相同,只是我们添加了一个git add .,意思是“将我当前目录及以下所有内容添加到我的代码库中”。


似乎需要远程添加。 - BAD_SEED
3
你的回答似乎是错误的。git commit -a 应该等同于 git add . && git commit。这就是 -a 的作用,不是吗? - Olhovsky
8
git commit -a 命令会提交所有已经存在于代码库中的文件的未提交修改。git add .命令会递归地将当前目录下的所有文件添加到代码库中。也就是说,使用 git add . 命令后再执行 git commit 命令会将新文件添加到代码库中,而使用 git commit -a 命令则只会提交对已存在文件的修改。 - larsks
9
这似乎是一个很糟糕的理由来对一个回答进行贬值,特别是当你并不是提问者。你可以发一个的问题来获得你想要的答案! - larsks

0
另一个问题可能潜伏着。你正在混合使用"-a"和".",换句话说,这两个都是可以接受的,但不能同时出现在一起:
没问题:
git commit -a -m 'Initial commit'

好的。
git commit -m 'Initial commit' .

糟糕:
git commit -a -m 'Initial commit' .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接