微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“git add <file_name>”命令导致错误“fatal: pathspec ‘file_name’ did not match any files

如何解决“git add <file_name>”命令导致错误“fatal: pathspec ‘file_name’ did not match any files

在您标记为重复之前,我参考了这个类似的问题:Fatal: pathspec 'file.txt' did not match any files,GIT

但是我的问题似乎与那里发布的问题略有不同。

我是 Git 和 GitHub 的完全初学者。我已经编写了一个完整的程序并按照说明将其上传/提交到我的 GitHub 页面。它似乎没有任何问题。

后来,作为进一步的练习,我编辑了包含我的程序源代码文件。我试图做的就是将这个新编辑的程序版本上传/提交到我的 GitHub 页面。但是,当我尝试输入命令时:

git add <file_name> 

我收到以下消息:

fatal: pathspec 'file_name' did not match any files

我认为这可能是一个语法问题,所以我尝试了带有和不带有文件扩展名“.txt”的“git add ”命令我还尝试了使用“/”而不是文件扩展名的添加命令因为这就是使用“git status”命令时它在 Git Bash 中的显示方式。没有任何效果

git add error 1

然后我注意到当我使用“dir”命令时,文件名使用不同的语法表示。似乎由空格分隔的多个单词组成的文件名用反斜杠后跟一个空格表示并且没有文件扩展名,所以我的文件:“Word Guess.txt”变成了“Word\ Guess”考虑到这一点我尝试了“ git add”命令使用这个不同的文件名表示,我写道:

git add Word\ Guess

这给了我以下警告:

git add error 2

我不完全理解警告的意思,但这显然不是我想要的结果。显然我在这里遗漏了一些东西。在对我在这文章顶部引用的类似问题的回复中,评论者说问题的根源在于该文件不存在并且您无法在创建文件之前添加文件,但在我的情况下似乎很明显,该文件存在是因为该程序功能齐全并且已经成功上传到我的 GitHub 页面。我没有掌握什么?

*Edit 我现在变得更加困惑了。在最后一个屏幕截图中,警告消息说:

if you added this path by mistake,you can remove it from the index with:
    git rm --cached Word Guess/bin

但是,在完全按照 Git Bash 警告中显示的命令键入命令后:

git rm --cached Word Guess/bin

我遇到了和以前一样的错误

fatal: pathspec 'Word' did not match any files

然后我尝试使用替代名称表示

git rm --cached Word\ Guess/bin

这给了我以下错误

error: the following file has staged content different from both the file and the HEAD: 
Word Guess/bin
(use -f to force removal)

见下面的屏幕截图:

git add error 3

我现在完全不知道如何继续,并且很沮丧我似乎甚至无法撤消错误的命令。

解决方法

您的 Word Guess 目录(文件夹,如果您愿意)包含一个 Git 存储库。 Git 存储库不能包含另一个 Git 存储库,因此“外部”Git 拒绝添加整个内部存储库。它确实添加了东西,但它添加的不是 Git 存储库:而是添加了一个子模块,它是对的引用另一个 Git 存储库。

这使得外部 Git 充当所谓的超级项目。当克隆一个超级项目时,超级项目包含对某个其他 Git 项目的引用,git submodule initgit submodule update --init 知道阅读“我从哪里克隆这个其他 Git 项目”的说明并克隆它。稍后的 git checkout --recursivegit submodule update --checkout 使用存储的关于子模块中要检出哪个 提交 的信息。

要正确添加子模块,您需要使用 git submodule add,而不是 git add。您使用 git add更新子模块链接,但只有在之后 git submodule add 才能正确添加子模块。如果您最初使用 git add 添加子模块,您会得到我有时称之为“半途而废”的子模块:一个缺少关于在超级项目的其他克隆中 Git 应该在哪里克隆子模块来自。如果没有这些信息,超级项目的新克隆就知道它需要提交其他 Git 存储库的 a123456(或其他任何内容),但不知道应该从哪里克隆其他 Git 存储库from . (除非您打算自己手动克隆子模块,否则这不是很有用,这就是我称其为“半途而废”的原因。)

在 Git 1.5、1.6 和 1.7 早期的糟糕日子里,人们过去常常将子模块称为 sob-modules,因为工具太糟糕了,让人哭笑不得。 ?它仍然......不是那么好,我认为有些人仍然使用这个短语。如果您确实想要一个子模块,请确定您想要一个子模块。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?