";git添加<;文件名>&引用;命令会导致错误“;致命:pathspec';文件名';不匹配任何文件

";git添加<;文件名>&引用;命令会导致错误“;致命:pathspec';文件名';不匹配任何文件,git,github,git-bash,git-add,Git,Github,Git Bash,Git Add,在您标记为重复之前,我引用了类似的问题: 然而,我的问题似乎有点不同,张贴在那里 我是Git和GitHub的完全初学者。我已经编写了一个完整的程序,并按照说明将其上传/提交到我的GitHub页面。它似乎没有任何问题 后来,作为进一步的练习,我编辑了包含程序源代码的文件。我所要做的就是将这个新编辑的程序版本上传/提交到我的GitHub页面。但是,当我尝试输入命令时: git add <file_name> 我认为这可能是一个语法问题,所以我尝试了带有或不带文件扩展名“.txt”的“

在您标记为重复之前,我引用了类似的问题:

然而,我的问题似乎有点不同,张贴在那里

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

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

git add <file_name> 
我认为这可能是一个语法问题,所以我尝试了带有或不带文件扩展名“.txt”的“git add”命令。我还尝试了使用“/”而不是文件扩展名的add命令,因为这是使用“git status”命令时在git Bash中显示的方式。什么都没起作用。

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

git add Word\ Guess
这给了我以下警告:

我不完全理解警告所说的,但这显然不是我想要的结果。很明显,我遗漏了一些东西。在回答我在本文顶部提到的类似问题时,评论说,问题的根源是该文件不存在,您无法在创建之前添加文件,但在我的情况下,该文件显然存在,因为该程序功能齐全,并且已成功上载到我的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)
请参见下面的屏幕截图:


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

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

这使得外部Git充当所谓的超级项目。克隆超级项目时,超级项目包含对某个其他Git项目的引用,
Git子模块init
Git子模块更新--init
知道阅读“从何处克隆此其他Git项目”的说明并克隆它。稍后的
git签出--recursive
,或
git子模块更新--checkout
,使用存储的关于要在子模块中签出哪个提交的信息

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


在Git 1.5、1.6和1.7早期糟糕的旧时代,人们通常将子模块称为sob模块,因为工具太差了,以至于让人大哭。顺便说一句,你的问题的前半部分是不相关的。你发现你需要避开空白。Word Guess的bin文件夹中有什么?@JBallin在bin文件夹中有以下内容:“.git”文件夹、“README.md”文件、“WordGuess.class”文件和一个名为“[a.[C.[B”的奇怪文件我不知道最后一个文件是什么,点不是正常的周期,它们更高,几乎像一个“*”字符
∙[A]∙[C]∙[B
文件可能是将箭头键或类似项转换为文件名的结果。感谢您的澄清。我肯定不打算创建子模块,这是否意味着在尝试添加命令时我位于错误的根目录中。包含我的项目的目录路径为:C:\Users\Gabe\OneDrive\Documents\School\GitHub projects\Word Guess我以为包含本地存储库的目录路径是:C:\Users\Gabe\OneDrive\Documents\School\GitHub projects我在git bash中执行的命令比Word Guess文件夹高一级,是不是不对?当我按照git bash上的说明执行“git rm”时,我该如何撤消此操作命令它似乎只是进一步加剧了我在上一次屏幕截图中看到的问题。这不一定是一个错误。这只是Git的设计方式,它给了您这个限制:您不能试图通过不将Git存储库用作另一个Git存储库的子目录而将Git存储库放入Git存储库,或者接受子模块:要移除半组装子模块,请使用error: the following file has staged content different from both the file and the HEAD: Word Guess/bin (use -f to force removal)