Py学习  »  Git

“git add<file_name>”命令导致错误“致命:pathspec‘file_name’与任何文件都不匹配”

Trixie the Cat • 3 年前 • 1364 次点击  

在你标记为重复之前,我引用了这个类似的问题: 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

我认为这可能是语法问题,所以我尝试了“git add<file_name>”我还尝试了使用“/”而不是文件扩展名的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页面。我没抓住什么?

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

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

我现在完全不知道该怎么做了,我甚至无法撤销错误的命令,这让我很沮丧。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131401
 
1364 次点击  
文章 [ 1 ]  |  最新文章 3 年前
torek
Reply   •   1 楼
torek    4 年前

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

这使得外部Git充当所谓的 超级项目 。克隆超级项目时,超级项目包含对其他Git项目的引用,以及 git submodule init git submodule update --init 知道如何阅读“从何处克隆另一个Git项目”的说明并克隆它。A以后 git checkout --recursive git submodule update --checkout ,使用存储的有关 犯罪 将在子模块中签出。

要正确添加子模块,需要使用 git submodule add git add .你用 git添加 使现代化 子模块链接,但仅限于 之后 git子模块添加 正确添加子模块。如果你使用 git添加 在最初添加子模块时,您会得到我有时称之为“半途而废”的子模块:一个缺少关于Git在超级项目的其他克隆中应该在何处克隆子模块的说明的子模块 从…起 .如果没有这些信息,超级项目的新克隆就会知道它需要提交 a123456 (或者其他什么)的Git存储库,但不知道应该在哪里克隆另一个Git存储库 从…起 (除非你计划自己手动克隆子模块,否则这不是很有用,这就是为什么我称之为“半途而废”。)

在Git 1.5、1.6和1.7早期糟糕的旧时代,人们通常将子模块称为sob模块,因为工具太差了,以至于让人大哭。还是。。。不是很好,我认为有些人仍然使用这个短语。如果你真的想要一个子模块,请 真的确定吗 你想要一个子模块。