Git - 不会添加文件?

时间:2011-09-20 19:36:39

标签: git

我遇到无法将文件添加到存储库的问题。

我在Windows上使用GIT,在Aptana Studio中进行一些Ruby开发。

我已经设法将一些文件推送到GitHub,但在此之后,一切都停止了工作。我的主目录中有一个新的子文件夹,里面有2个ruby文件。如果我调用“git add。”,然后调用“git status”并继续说“工作目录清理”并且没有任何提交。

我尝试过“git add folder / myfile.rb”,但仍然没有。

任何人都知道我可以尝试什么?

29 个答案:

答案 0 :(得分:117)

我发现自己处于与海报类似的情况:

  

如果我打电话给“git add。”,然后是“git status”,它会继续说   “工作目录清理”并没有任何提交。

但我有一个不同于此处的解决方案。自从我第一次来到这里,我希望能有一些时间来拯救他人。

从上面的答案以及我在其他地方看到的情况来看,这个问题的常见修复方法是:

  • 确保对相关文件实际保存了更改
  • 确保该文件不符合.gitignore.git/info/exclude
  • 中的排除规则
  • 确保您没有尝试添加空文件夹。 Git不会跟踪那些。标准解决方案是将名为.gitkeep的空白文件放置为占位符,以便git跟踪该文件夹。

在我的情况下,我最初试图围绕现有的仓库创建一个git仓库(不知道它在那里)。我刚刚从这个子仓库中删除了.git文件夹,但我没有意识到为时已晚,git已经将其作为子模块进行跟踪。您可以详细了解这些行为以及如何删除它们here,但

  • 我的解决方案就是简单地运行git rm --cached path_to_submodule

答案 1 :(得分:20)

为其他用户添加可能的解决方案:

确保您没有更改Windows中文件夹名称的大小写:

我遇到了类似的问题,其中一个名为Setup的文件夹由Git控制并托管在GitHub上,所有开发都是在Windows机器上完成的。

在某些时候,我将文件夹更改为setup(小写字母S)。从那时起,当我将新文件添加到安装文件夹时,它们存储在setup文件夹而不是Setup文件夹中,但我猜是因为我在Windows机器上开发了现有的{{1 git / github中的文件夹未更改为Setup

结果是我无法在GitHub中的setup中看到所有文件。我怀疑如果我在* nix机器上克隆项目,我会看到两个文件夹,setupSetup

因此,请确保您没有更改Windows计算机上包含文件夹的大小写,如果您有,那么我建议:

  • 将文件夹重命名为setup
  • setup-temp
  • git add -A
  • 将文件夹重命名为您想要的内容
  • git commit -m "Whatever"
  • git add -A

答案 2 :(得分:18)

如果文件被.gitignore排除,并且您想要添加它,则可以强制执行:

git add -f path/to/file.ext

答案 3 :(得分:13)

仔细检查您的.gitignore文件,确保Git能够看到该文件。同样,有一个文件.git/info/exclude“排除”项目中的文件/目录,就像.gitignore文件一样。

答案 4 :(得分:11)

很奇怪,但是我整夜都和git一起战斗来添加文件。原来它已经添加了。由于我的帐户无法访问该文件,并且我的IDE未通过SSH报告此错误,因此Git没有收到我的更改,因为更改未被保存。

简而言之,请检查以确保您尚未将其添加到存储库中。

答案 5 :(得分:8)

最好的办法是复制你的文件夹。删除原始。从github克隆项目,将新文件复制到新的克隆文件夹,然后重试。

答案 6 :(得分:3)

我在文件夹中的第一个程序遇到此问题。我做了“git add”然后“git commit”。 “git status”给出了所描述的错误,即“没有提交,工作目录清理”

我最终从程序文件夹中删除了.git文件。然后我做了一个新的git init,git add和git commit,它起作用了。

答案 7 :(得分:3)

标准程序如何:

git add folder
git commit

这将使用一个命令添加文件夹及其所有文件 请注意,git无法存储空文件夹。

如果提交不起作用,您应该检查的第一个地方可能是.gitignore

答案 8 :(得分:2)

在我的情况下,问题是启用了SafeCrLf选项。我在窗户上有乌龟git。禁用该选项后,添加文件不再是问题。

答案 9 :(得分:2)

Here您可以找到同一问题的答案:

基本上在这种情况下问题是global_git ignore

答案 10 :(得分:2)

来自我的愚蠢解决方案,但我认为它并没有添加和推送新文件,因为github.com没有显示我刚刚推送的文件。我忘记了我添加的文件位于不同的分支上。文件推得很好。我不得不从我的主分支切换到github中的新分支来查看它们。在那一个上失去了几分钟:))

答案 11 :(得分:1)

将第一个文件添加到从 GitHub 克隆的空存储库是不可能的(对我而言)。您需要按照GitHub建议创建的README链接。在在线创建第一个文件之后,您可以使用git正常工作。

这发生在2016年11月17日。

答案 12 :(得分:1)

您可以递归删除git初始化的仓库$cd repo added $git rm -rf git

您可以创建一个单独的分支,并将子模块链接到master分支。子模块上的文档非常有用文档[https://git-scm.com/book/zh/v2/Git-Tools-Submodules]

另请参阅[https://stackoverflow.com/questions/36236484/maintaining-a-git-repo-inside-another-git-repo]中的一些解决方案

答案 13 :(得分:1)

我仍然是git的初学者,这只是我犯的一个愚蠢错误,一句话很长。我不在@gaoagong报告的子文件夹中,而是在父文件夹中。奇怪的是,我没有从答案中得到想法,而是当我测试git add --all时出现了这个想法,请参见下面的详细内容。

详细示例。 实际回购:

enter image description here

我在父级别上错误打开的“父”文件夹(在我的情况下为vscode_git):

enter image description here

我已经克隆了一个存储库,但是我在该存储库上方有一个父文件夹,而是打开了它,然后我尝试使用git add 'd:\Stack Overflow\vscode_git\vscode-java\.github\ISSUE_TEMPLATE.md'添加该子文件夹的存储库文件,该文件什么也不做,没有警告消息,随后git status说:

未添加任何内容来提交但存在未跟踪的文件(使用“ git add”进行跟踪)

enter image description here

运行git add --all给了我黄色的笔记:

警告:添加嵌入式git存储库:vscode-java嵌入式存储库,并且不知道如何获取它。

提示:如果要添加子模块,请使用: git子模块添加vscode-java

提示:如果您错误地添加了此路径,则可以使用以下命令将其从索引中删除 git rm-缓存vscode-java

有关更多信息,请参见“ git帮助子模块”。git

enter image description here

要解决此问题,我将git add --all还原为git rm --cached -r -f -- "d:\Stack Overflow\vscode_git\vscode-java" rm 'vscode-java'

enter image description here

然后,只需打开实际的repo文件夹,

enter image description here

git再次按预期工作。当然可以删除父文件夹的“ .git”文件夹,然后:

enter image description here

答案 14 :(得分:0)

我想如果您在 git bash 中注销前一个项目,然后尝试将这些文件添加到新项目中。它会正常工作

答案 15 :(得分:0)

这就是我的工作方式:

我从...开始

client.helpers.bulk()

包含我要包含的所有文件/文件夹的目录内。

我跑了

git init 

之后

我在原点之外创建了另一个目录,移入该目录,然后使用github页面上设置的http://../../.git文件克隆了现有的git repo。 / p>

一旦它克隆了源文件(除了readme.md之外),我就使用

将所有文件从旧目录复制到了新目录中。

git add --all
git add .
git commit -m "uploaded fixed sources 3"
git push origin master

然后我再次添加,然后提交并推送这些编辑。

cp -rf ../../* .

不要问我为什么,但是这次他们上传到github网站,并显示为文件,您可以在.zip压缩包中访问。

答案 16 :(得分:0)

在这种情况下,请检查全局.gitignore文件中的规则,并确保您的文件夹不适合这些规则。

答案 17 :(得分:0)

当我在Uppercase/Lowercase之间重命名文件时,发生了类似的事情。因此,临时文件重命名可能会解决问题。

答案 18 :(得分:0)

我已经尝试了以上所有方法,但是没有任何效果。后来,我以 admin 的身份运行命令提示符,然后重试了所有阶段,即 暂存->提交->远程添加->推送。 它像魔术一样工作。这些更改反映在所需的远程存储库中。

希望它会有所帮助:)保持冷静并保持编码。

P.S。我是新手,请尝试从错误中学习。

答案 19 :(得分:0)

问题 git不会添加更改的文件。 使用git bash,我更改了用双引号分隔文件夹名称的文件夹。 请正确显示文件夹内容,但是git不会添加更改的文件。

解决方案 我使用单引号分隔了文件夹名称。

例如 CD“文件夹名称” git状态 没什么可做的,工作中的树很干净 CD .. ls '文件夹名称' CD'文件夹名称' git状态 修改:ModifiedFileName.bat

答案 20 :(得分:0)

我有一个类似的问题。

问题是在Windows上的索引中,文件的添加情况与未暂存区域中的情况不同。例如,在索引中,文件名为xx.txt,在未暂存区域中,文件名为Xx.txt

从索引(xx.txt)中删除了大小写不正确的文件。然后,我就可以使用正确的大小写(Xx.txt)添加文件了。

答案 21 :(得分:0)

我遇到一个问题,其中一个文件夹中的文件不会添加到Github源代码管理中。为了解决这个问题,我删除了在该文件夹下创建的.git文件夹。

答案 22 :(得分:0)

我遇到了同样的问题,这是因为有一个程序使用了某个文件,而在这种情况下Visual Studio锁定了该文件,git抛出了一个错误。

答案 23 :(得分:0)

我在Visual Studio上遇到此问题,对我有用的是: 1-右键单击git无法识别的添加文件。 2-选择“将排除的文件添加到源代码管理”

答案 24 :(得分:0)

我最近在运行Windows 7的计算机上遇到此问题。我正在使用git命令窗口界面。解决方案是,在执行git add时,请注意文件名和目录名是否区分大小写。尽管当大小写与Windows文件系统文件和目录名称的大小写不完全匹配时git不会抱怨,但是git也不会添加文件。没有什么可提交的。一旦我输入了完全正确的大小写文件名,它们就会被添加并列在要按我的意图提交的更改下。

答案 25 :(得分:0)

我从SiteGround Git克隆到我的Mac上的一个回购源也遇到了同样的问题。新克隆的存储库包含git status说需要添加到提交中的已更改文件的列表,但是尝试添加或检出它们中的任何一个根本不起作用。

由于某些原因,文件名中的大小写有所更改(例如.jpg-> .JPG)。解决方案是简单地git mv将操作系统使用的文件名更改为git使用的名称,例如:

git mv File_That_Wont_Add.txt File_THAT_WONT_Add.txt

答案 26 :(得分:0)

我知道这是一个非常老的问题,但是我也知道它可能也会发生在某人身上,原来我正在使用一个名为AUX.JS的文件,并且这是Windows的保留文件名,这产生了以下错误

  

致命:无法统计'src / hoc / Aux.js':没有此类文件或目录

因此您可以删除文件或重命名文件,然后它将起作用。

最后的结论,除了所有其他有效答案外,如果您在Windows机器中注意“ git add”命令的输出,它还可以提供其他信息。

答案 27 :(得分:0)

另一个问题可能是文件权限。 尝试发行: HTTP 404

答案 28 :(得分:0)

我搜索了一会儿,最后发现我已经阻止了SSH端口,这导致git add命令停止工作。我最后使用https使用以下命令更改原点:git remote set-url origin [url-to-git-repo]