.gitignore is ignored by Git
我的
我的
1 2 3 | # This is a comment debug.log nbproject/ |
1 2 3 4 5 6 7 8 9 | # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Untracked files: # (use"git add <file>..." to include in what will be committed) # # debug.log # nbproject/ nothing added to commit but untracked files present (use"git add" to track) |
号
我希望
我应该从哪里着手解决这个问题?
即使到目前为止您还没有跟踪这些文件,Git似乎能够"了解"这些文件,即使在您将它们添加到
注意:首先提交当前更改,否则将丢失它们。
然后从Git存储库的顶部文件夹中运行以下命令:
1 2 3 | git rm -r --cached . git add . git commit -m"fixed untracked files" |
如果Git似乎没有注意到您对
- 可能有一个全局
.gitignore 文件可能会干扰您的本地文件 将某些内容添加到.gitignore文件中时,请尝试以下操作:
1
2
3
4git add [uncommitted changes you want to keep] && git commit
git rm -r --cached .
git add .
git commit -m"fixed untracked files"如果从.gitignore文件中删除某些内容,但上述步骤不起作用,请尝试以下操作:
1
2
3
4
5
6git add -f [files you want to track again]
git commit -m"Refresh removing files from .gitignore file."
// For example, if you want the .java type file to be tracked again,
// The command should be:
// git add -f *.java。
固定的。好的,我在Windows的记事本中创建了.gitignore文件,但它不起作用。当我在Linux上查看.gitignore文件时,它看起来像是有组织的胡言乱语——也许记事本写的是Unicode而不是ASCII或任何8位代码。
所以我在我的Linux设备上重写了这个文件,当我把它放回Windows时,它工作得很好!万岁!
如果不向您的项目添加另一个承诺,一行就足以使
1 | git rm -r --cached debug.log nbproject |
。
这将从存储库中删除它们,但仍将它们保留在物理上。在简单的英语中,它会删除与它们相关的任何更改历史,并且在将来的提交中也不会跟踪它们的更改。你可以在这里找到更好的解释。
此问题的另一个原因是语句前的空格或制表符:
例子:
1 2 3 | # Be aware of the following: notWorkingIgnore.* workingIgnore.* |
号
正如下面的评论所指出的,尾随空格也可能是一个问题:
1 2 3 | # Be aware of the following: notWorkingIgnore.* #<-Space workingIgnore.*#<-Nospace |
我注意到
过程:
与其他解决方案一样,请先提交,并注意您将丢失任何未提交的更改。
我有更好的结果:
1 2 3 | git rm -r --cached . git reset HEAD --hard git status |
号
请注意,状态现在不应该有任何修改过的文件。
这里的所有答案实际上都是解决方法。在运行
1 2 | echo .idea/ >> .gitignore git init |
如果您每天进行开发,我建议您将习惯性忽略的文件添加到您的
在我的例子中,这是因为文件已经存在于存储库中,我试图忽略它。
以下是我为解决这个问题所做的:
- 将文件复制到临时文件夹
- 从我的项目文件夹中删除它们。
- 提交从存储库中删除这些文件的更改
- 将这些文件重新添加到我的项目文件夹
到那时,我对这些文件所做的任何更改都将被忽略。
我认为您不能忽略存储库中已经存在的文件。
还可以查看放置
它应该在项目的根目录中:
1 | ./myproject/.gitignore |
不在
1 | ./myproject/.git/.gitignore |
。
您需要始终将其命名为
我刚刚碰到这个问题。.gitignore文件中的内容继续出现在未跟踪文件列表中。
我用这个创建了忽略文件:
1 | echo"node_modules"> .gitignore |
。
原来是双引号引起了这个问题。我删除了忽略文件,然后再次使用了不带引号的命令,它按预期工作。我不需要乱搞文件编码。我在使用Cmder的Windows 10计算机上。
例子:
1 | echo node_modules > .gitignore |
对我来说,以前的答案都不管用。我不得不将
1 | <Your-project-folder>\.git\info |
完成后,刷新您的更改,所有未跟踪的文件都将消失。照常承诺。
我遇到了这个问题,一个包含此行的.gitignore文件:
1 | lib/ext/ |
我刚刚意识到,实际上,这个目录是指向其他文件夹的符号链接:
1 2 | ls -la lib/ext/ lrwxr-xr-x 1 roipoussiere users 47 Feb 6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib |
。
在
我在.gitignore文件中将
专门针对Windows用户:如果您有未跟踪的文件,并且清除/删除缓存文件不起作用。尝试打开PowerShell并将.gitignore文件转换为utf-8编码:
江户十一〔11〕。
埃多克斯1〔12〕
您只需要这样做一次,就可以对该目录的.gitignore文件进行编码,并且由于该文件随后被正确编码,所以无论何时编辑该文件,它都会正常工作。我认为这是因为Github没有准备读取.gitignore文件的非UTF-8编码时出现了故障。据我所知,这个问题还没有为Windows解决。这不是什么大问题,只是在不工作的时候调试会很痛苦。
我的问题是(正如op所建议的)一个损坏的.gitignore文件。我不相信这是真的,并且忽略了这种可能性,直到其他一切都失败了。损坏没有出现在
1 2 3 4 5 | ??# Built application files *.apk *.ap_ # ... |
我不知道这些是如何结束的,但是重新创建文件解决了这个问题。对损坏文件的十六进制分析显示:
1 2 3 | user@dev ~/project/myproject $ xxd -b .gitignore 00000000: 11111111 11111110 00100011 00000000 00100000 00000000 ..#. . 00000006: 01000010 00000000 01110101 00000000 01101001 00000000 B.u.i. |
号
我也有同样的问题。我认为问题是CR与CR+LF的差异。我使用cmd(在Windows 7上)和以下命令将内容存储在.gitignore中:
坏的:
1 2 | echo"file_to_be_ignored.py">> .gitignore echo"*~">> .gitignore |
。
等。
问题是这个命令没有为Git放置正确的行尾标记来识别换行符(当Git需要另一行时是CR或CR+LF)。我通过手动更换VIM中的每一条新线来解决这个问题(VIM到救援!)而且效果很好。
尝试在notepad++或vim中编辑.gitignore(理想情况下)。即使文件的格式正确,也要尝试替换换行符。听起来很奇怪,我知道,但这对我很管用。D
好吧,所以在我的例子中,接受的解决方案不起作用,这里描述了所起的作用:
Visual Studio 2013是否忽略.gitignore文件?
简而言之:
- 关闭Visual Studio。
- 导航到.git文件夹
- 删除
ms-persist.xml 。 - 重新启动Visual Studio
还有一件事需要注意:您是否保存了带有正确行尾的.gitignore文件?
窗户:
如果在Windows上使用,是否用Windows行尾保存?并非所有的程序都会在默认情况下这样做;记事本++和许多PHP编辑器默认为Linux行尾,因此这些文件将与服务器兼容。检查这个的一个简单方法是在Windows记事本中打开文件。如果所有内容都出现在一行上,那么文件是用Linux行结尾保存的。
Linux:
如果在Linux环境中工作的文件有问题,请在Emacs或nano等编辑器中打开该文件。如果您看到任何不可打印的字符,则文件以Windows行结尾保存。
只需通过以下命令删除以前在Git中提交的文件夹或文件。然后,gitignore文件将反映正确的文件。
1 | git rm -r -f"folder or files insides" |
。
这里其他答案没有涵盖的一个棘手问题是,如果您有内联注释,.gitignore文件将无法工作,如:
1 | foo/bar # The bar file contains sensitive data so we don't want to make this public |
。
因此,如果您确实有这样的评论,请按如下方式更改它们:
1 2 | # The bar file contains sensitive data so we don't want to make this public foo/bar |
也可以使用
用
我已经在Windows的PowerShell中创建了.gitignore,因为它不允许我在Windows资源管理器中创建它。
在我的例子中,问题是所创建文件的编码,在我将其更改为ANSI之后,问题就解决了。
另一个可能的原因是,Git客户机的一些实例同时运行。例如,"git shell"+"github桌面"等。
这件事发生在我身上。我使用"Github桌面"作为主客户端,它忽略了一些新的.GitIgnore设置:提交后提交:
原因:Visual Studio代码编辑器在后台运行,具有相同的已打开存储库。Visual Studio代码具有内置的Git控件,这会导致一些冲突。
解决方案:仔细检查多个隐藏的Git客户机,一次只使用一个Git客户机,尤其是在清除Git缓存时。
如果您是记事本+用户,请尝试执行以下操作:
使用记事本++打开.gitignore文件并执行以下操作:
菜单编辑&rarr;EOL转换&rarr;Windows格式&rarr;保存。
再次尝试使用
我在这里发布了一个类似问题的答案。
对我来说,这是另一个问题。我的.gitignore文件设置为忽略除我告诉它不要忽略的内容之外的所有内容。就像这样:
1 2 | /* !/content/ |
这显然意味着我也要告诉Git忽略.git ignore文件本身。只要我不跟踪.gitignore文件就没问题。但在某个时候,我提交了.gitignore文件本身。然后导致正确忽略.gitignore文件。
所以再加一行就可以解决这个问题了:
1 2 3 | /* !/content/ !.gitignore |
。