由于某种原因,我的.gitignore文件无法正常工作,而且没有多少谷歌搜索能够修复它
*.apk
*.ap_
*.dex
*.class
**/bin/
**/gen/
.gradle/
build/
local.properties
**/proguard/
*.log
它在主目录中,这是我的git repo。我运行Git 1.8.4.2,因为我使用的是运行OSX 10.8.6的MacBook。
由于某种原因,我的.gitignore文件无法正常工作,而且没有多少谷歌搜索能够修复它
*.apk
*.ap_
*.dex
*.class
**/bin/
**/gen/
.gradle/
build/
local.properties
**/proguard/
*.log
它在主目录中,这是我的git repo。我运行Git 1.8.4.2,因为我使用的是运行OSX 10.8.6的MacBook。
您的版本控制中的文件/文件夹不会因为您将它们添加到.gitignore中而自行删除。它们已经在存储库中,您必须删除它们。你可以这样做:
记住,在你做这件事之前,要把你改变的一切都提交给别人!
git rm -rf --cached .
git add .
这将从存储库中删除所有文件并将其添加回(这一次遵循.gitignore中的规则)。
要取消跟踪已添加/初始化到存储库的单个文件,即停止跟踪该文件,但不从系统中删除它,请使用:git rm--缓存文件名
要取消跟踪.gitignore中的每个文件,请执行以下操作:
首先提交所有未完成的代码更改,然后运行以下命令:
git rm -r --cached .
这将从索引(临时区域)中删除所有更改的文件,然后只需运行:
git add .
提交:
git commit -m ".gitignore is now working"
在经历了一点兔子洞之后,我试图找到这个问题的答案(可能是因为我必须在一个视觉工作室项目中这样做),我发现更容易的方法是
剪切并粘贴我不再想跟踪的文件到临时位置提交这些文件的“删除”提交.gitignore的修改以排除我临时移动的文件将文件移回文件夹。
我发现这是最直接的方法(至少在visual studio中,或者我会假设其他基于IDE的环境,如Android studio),而不会意外地用一个非常普遍的git rm-rf-cached砸自己的脚,之后,我正在处理的visual studio项目没有加载。
我通过以下方式解决了问题:
首先,我是一个windows用户,但我也遇到过类似的问题。所以,我在这里发布我的解决方案。
有一个简单的原因,为什么有时.gitignore不能像预期的那样工作。这是由于EOL转换行为。
这里有一个快速解决方案
编辑>EOL转换>Windows格式>保存
您可以将此归咎于文本编辑器设置。
例如:
由于我是一名windows开发人员,我通常使用Notepad++编辑文本,而不是Vim用户。
因此,当我使用Notepad++打开.gitignore文件时,会出现如下情况:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# See https://help.github.com/ignore-files/ for more about ignoring files.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.dll
*.force
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
如果我使用默认记事本打开同一个文件,这就是我得到的
## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # See https://help.github.com/ignore-files/ for more about ignoring files. # User-specific files *.suo *.user *.userosscache
因此,通过查看输出,您可能已经猜到了。gitignore中的所有内容都变成了一行,因为开头有一个##,所以它就好像所有内容都被注释了一样。
解决此问题的方法很简单:只需使用Notepad++打开.gitignore文件,然后执行以下操作
编辑>EOL转换>Windows格式>保存
下次使用windows默认记事本打开同一文件时,所有内容都应正确格式化。试试看这是否适合你。
我用一些东西为我生成了common.gitignore,我遇到了这个问题。读了@Ozesh的答案后,我在VS代码中打开了它,因为它在右下角有一个很好的指示器,显示了行尾的类型。这是低频,所以我按照建议转换为CRLF,但没有骰子。
然后我看了看行尾,发现它是用UTF16保存的。所以我使用UTF8编码一个voila重新保存,它起了作用。我认为CRLF并不重要,所以我把它改回LF以确保它仍然有效。
当然,这不是OP的问题,因为他已经提交了文件,所以它们已经被索引了,但我想我会分享一下,以防其他人遇到这个问题。
太长,读不下去了如果你还没有提交文件,并且.gitignore仍然不受尊重,那么检查文件编码,确保其UTF8,如果这不起作用,那么可以尝试使用换行符。
此外,评论必须在自己的行上。它们不能放在入口之后。所以这行不通:
/node_modules # DON'T COMMENT HERE (since nullifies entire line)
但这将奏效:
# fine to comment here
/node_modules
添加我的一点,因为这是一个流行的问题。
我无法将.history目录放在.gitignore中,因为无论我尝试了什么组合,它都不起作用。每次保存时,Windows都会生成新文件,我根本不想看到这些文件。
但后来我意识到,这只是我机器上的个人开发环境。像.history或.vscode这样的东西对我来说是特定的,所以如果每个人都根据所使用的IDE或OS包含自己的.gitignore条目,那就很奇怪了。
所以这对我来说很有用,只需在.git/info/exclude中添加“.hhistory”即可
echo ".history" >> .git/info/exclude
@Ahmad的答案是有效的,但如果你只是想忽略一个特定文件或几个文件,请按照@Nicolas的建议做
步骤1
将文件名添加到.gitignore文件
步骤2
[从git缓存中删除文件名(文件路径)
git rm—缓存的文件名
步骤3
提交更改git添加文件名
gitcommit-m“将文件名添加到.gitignore”
它将保持您的git历史记录干净,因为如果您执行git rm-r--cached。并将所有文件加回去提交,这将污染您的git历史记录(这将显示您在一次提交时添加了大量文件)。我不确定我表达的想法是否正确,但希望您明白这一点
我已经完成了echo-node_modules>>.gitignore,但没有成功。
出于某种原因,vscode的终端将文件保存在UCS-2LE BOM中,git似乎不接受这一点。
我使用记事本打开文件并将其转换为UTF-8++
它现在起作用了。
我认为他们需要解决这个问题,因为echo“filetoignore”>>
就我而言
我使用gitbash编写了以下命令:
echo[Enter_your_file_name.extension]>>.git忽略
然后执行推入式回购,并且工作正常
我的问题是,我最初在Mac上创建.gitignore,但现在在Windows机器上工作。在Mac电脑上,文件路径中使用“/”。在Windows上使用“\”。
所以为了让.gitignore文件正常工作,我必须使用一致的符号。在这种情况下,我必须对每个要添加的文件路径使用“/”,即使复制时是这样的:“file\path”。
在这个愚蠢的事情上浪费了好几个小时(这真的让我很烦)。
stackoverflow上有很多答案,但对我有用的并不是任何一个特定的答案,我在这里以简单的方式逐一记下所有需要完成的步骤:
预---备份回购以备不时之需。(我没有,但可能会让你觉得更安全)
确保这是您的第一次提交还是更早提交这些文件已添加,因此已被缓存。如果是,则git rm-r--缓存。和gitadd。(不要错过点)如果仍然无法工作,请在记事本中打开文件
转到文件->另存为将编码更改为ANSI。(有些答案错误地说UTF-8,但它不起作用,不必要地浪费时间)
Again git rm -r --cached .
and git add . (do not miss the dot)
Now do Git status and verify
what we wanted has happened
在cmd窗口中,使用下面的git命令,
git rm—缓存的文件名
解释:
gitrm-从工作树和索引中删除文件
--高速缓存的使用此选项可以取消分级并仅从索引中删除路径。工作树文件,无论是否修改,都将被单独保留。
--来自https://git-scm.com/docs/git-rm
有人可能会觉得这很有用。我的问题是格式。由于某种原因,在没有进行任何更改的情况下,git不喜欢文件内容的格式。.gitignore中的目录如下:
directory1/*
directory2/*
directory3/*
当我将格式更改为
directory1/
directory2/
directory3/
目录再次被忽略,我唯一需要添加/commit/push的就是.gitignore。
我知道这已经有很多答案了,但我最后回答这个问题的方式如下。。。
在新的repo中安装npm之前,我已经完成了'node_modules'>.gitignore,直到我更改了.gitignore'(添加了'**/node_modules'、'/node_mdules'等),然后进入git状态,我才意识到它是二进制格式,而不是文本格式,因此git无法识别它。
我通过删除.gitignore文件并将其重新添加到编辑器中来解决问题。
好吧,我的错误让人困惑。ginignore和。idea/。gitignore我用.iide/.gitignore做了所有的事情,不会对git存储库进行任何更改。希望这能帮助人们犯下和我一样的错误。
这3个命令将解决问题,您的.gitignore将工作:
git rm -r --cached .
git add .
git commit -m 'Remove ignored files'
现在检查状态:
git status
我是初学者,昨晚(在Windows上)遇到了同样的问题。我发现你的.gitignore文件不能有.txt扩展名。我是这样解决的。
打开任何目录并转到菜单栏,单击视图,然后选中“文件扩展名”之后,通过删除.txt扩展名来编辑.gitignore文件的名称。因此,您将得到一个文本文件.gitignore,而不包含.txt extsion。