Git-是否会添加文件?


79

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

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

我设法将一些文件推送到GitHub,但是在此之后,一切都停止了工作。例如,我的主目录中有一个新的子文件夹,其中包含2个ruby文件。如果我叫“ git add。”,然后叫“ git status”,它总是说“工作目录干净”,没有任何可提交的内容。

我已经尝试过“ git add folder / myfile.rb”,但还是没有。

任何人有什么主意我可以尝试吗?


2
不是在开玩笑,而是尝试重启机器
manojlds 2011年

这是我这方面的一个愚蠢的错误,我使用的是tortoise git,并且在提交任何更改时都有一个复选框,在我这一边未被选中,并且我仅在本地拥有一些新文件,因此请小心使用!
BotanMan

1
我在项目smh的子目录中
Jacksonkr,

@Jacksonkr,下面的gaoagong的答案已经报告了该解决方案。
洛伦兹

Answers:


142

我发现自己和发布者处于类似的情况:

如果我叫“ git add。”,然后叫“ git status”,它总是说“工作目录干净”,没有任何可提交的内容。

但是我有一个不同于这里的解决方案。自从我第一次来这个以来,我希望可以节省一些时间。

从上面的答案以及我在其他地方看到的内容,通常可以解决此问题:

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

就我而言,我最初试图在现有存储库周围创建一个git存储库(不知道它在那里)。.git不久前,我已经从该子仓库中删除了该文件夹,但是我没有意识到为时已晚,并且git已经将其作为子模块进行了跟踪。您可以在此处详细了解它们的行为方式以及如何删除它们,但是

  • 对我来说,解决方案是简单地运行git rm --cached path_to_submodule

29
救命!我只需要键入git rm --cached name_of_former_submodule就可以自动获取路径。
leymannx 2014年

8
什么是子模块
穆罕默德·乌默尔

我怎么知道那是我的问题?我不知道该如何认识
PlayHardGoPro

1
@MuhammadUmer官方Git自述文件的子模块页面详细介绍了它们。
zrisher

28

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

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

我有一个类似的问题,其中一个名为SetupGit的控件文件夹托管在GitHub上,所有开发都在Windows计算机上完成。

有时我将文件夹更改为setup(小写S)。从那时起,当我将新文件添加到setup文件夹时,它们存储在该setup文件夹中,而不是该Setup文件夹中,但是我想是因为我在Windows计算机上进行开发Setup,因此git / github中的现有文件夹未更改为setup

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

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

  • 将文件夹重命名为类似 setup-temp
  • git add -A
  • git commit -m "Whatever"
  • 将文件夹重命名为所需的名称
  • git add -A
  • git commit -m "Whatever"

7
文件名也发生在我身上。使用git mv -f newFileCase oldFileCase将更正存储库
Brian DiCasa

不幸的是,我在osx上遇到了一个大小写问题,尽管它是一个* nux文件系统,但通常将其设置为不区分大小写,这可能会导致git等* nux工具出现问题。
颗粒

谢谢,您保存了我的一天

如果文件中的“相同名称”中有待处理的更改,但使用了不同的Case,则可能还会导致相同的问题
Mauricio Gracia Gutierrez

如何找到git期望的oldFileCase?
diemo

22

如果文件被排除,.gitignore并且您仍要添加它,则可以通过以下方式强制使用:

git add -f path/to/file.ext

非常感谢!这真的帮助了我。由于某种原因,我的文件被排除了(不是.gitignore很不确定为什么!),这解决了我的问题!
benmaq

13

奇怪,但是我整夜都与git战斗来添加文件。原来它已经被添加了。Git没有选择我的更改,因为没有保存更改,因为我的帐户无法访问该文件,并且我的IDE也未通过SSH报告此更改。

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


1
...考虑到这一点,git如果任何给定的路径已经完全在存储库中,则可能会添加一条消息...这将在几分钟内节省至少13个人。
jjmontes

13

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


我还要加倍检查文件是否已经以某种方式“已添加” ...
rogerdpack

9

我只是遇到了这个问题,问题是我在目录中而不是顶级目录中。一旦我移到最高级别,它就起作用了。


2
我确信我可以使用git add ..或进行任何必要的设置以达到我的更改所依据的水平,并且它也将起作用。这只是一个棘手的问题(我的用户错误)。
gaoagong '17

8

最好的选择是复制您的文件夹。删除原件。从github克隆项目,将新文件复制到新的克隆文件夹中,然后重试。


这对我在CygWin上使用git并获得一些“权限混乱”消息很有效。我什至不需要克隆和复制更改的文件,我只是复制了目录。我认为强制Windows重新编写所有内容意味着它可以纠正权限问题。
RoG

5

我在文件夹中的第一个程序时遇到了这个问题。我做了“ git添加”,然后“ git提交”。“ git status”给出了描述的错误,即“什么也没提交,工作目录干净”

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


对我而言,情况恰恰相反。我处于合并(变基)冲突中,因此不得不cd进入该文件git add的文件夹。
LosManos



2

就我而言,该问题已启用SafeCrLf选项。我在窗户上有乌龟git。禁用该选项后,添加文件不再是问题。



2

我的解决方案很愚蠢,但是我认为这不是添加和推送新文件,因为github.com并未显示我刚刚推送的文件。我忘记了我添加的文件在另一个分支上。该文件已推得很好。我必须从我的master分支切换到github中的新分支才能看到它们。失去了那几分钟:)


1

对我而言,不可能将第一个文件添加到从GitHub克隆的空存储库中。您需要单击GitHub建议创建的自述链接。当你在线创建您的第一个文件,你可以用git正常工作。

这发生在我2016年11月17日。


1

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

详细示例。 实际回购:

在此处输入图片说明

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

在此处输入图片说明

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

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

在此处输入图片说明

跑步git add --all给了我黄色的笔记:

警告:添加嵌入式git仓库:vscode-java嵌入式仓库,将不知道如何获取它。

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

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

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

在此处输入图片说明

为了解决这个问题,我的恢复git add --allgit rm --cached -r -f -- "d:\Stack Overflow\vscode_git\vscode-java" rm 'vscode-java'

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明


1

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

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

另请参见[/programming/36236484/maintaining-a-git-repo-inside-another-git-repo]中的一些解决方案


0

我搜索了一会儿,最后发现我阻塞了SSH端口,这就是git add命令停止工作的原因。我最终通过以下命令使用https更改了原点:git remote set-url origin [url-to-git-repo]


0

我知道这是一个非常老的问题,但是我也知道有人可能也会遇到这个问题,原来我正在使用一个名为AUX.JS的文件,而thi是Windows的保留文件名,这产生了以下错误

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

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

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


这在Windows上也同样发生,我在该OS上使用git bash正常创建Aux.js文件
Alex

0

我从SiteGround Git克隆到我的Mac上的一个回购软件也遇到了同样的问题。新克隆的回购包含更改文件列表,git status据说需要将其添加到提交中,但是尝试添加或签出其中的任何文件根本没有任何作用。

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

git mv File_That_Wont_Add.txt File_THAT_WONT_Add.txt

0

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


0

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


0

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


0

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


0

我有一个类似的问题。

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

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


0

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

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

例如CD“文件夹名称” git status没有要提交的内容,工作树清洁CD .. ls'文件夹名称'CD'文件夹名称'git状态已修改:ModifiedFileName.bat


0

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

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

PS我是新手,请尝试从错误中学习。


0

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



0

这是我的工作方式:

我开始于

git init 

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

我跑了

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

然后

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

一旦它克隆了源文件(除了readme.md就是其他文件),我将所有文件从旧目录复制到新目录中,

cp -rf ../../* .

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.