吉蒂格尔没有工作

use*_*133 192 git gitignore

我的.gitignore文件由于某种原因无法正常工作,并且没有任何谷歌搜索能够修复它.这是我有的:

*.apk
*.ap_
*.dex
*.class
**/bin/
**/gen/
.gradle/
build/
local.properties
**/proguard/
*.log
Run Code Online (Sandbox Code Playgroud)

它在目录中master,这是我的git repo.我正在运行Git 1.8.4.2因为我在MacBook上运行OSX 10.8.6.

Ahm*_*mad 502

版本控制中的文件/文件夹不仅仅是因为您将它们添加到了文件夹中而自行删除.gitignore.它们已经存储在存储库中,您必须将其删除.你可以这样做:

(记得在执行此操作之前提交您已更改的所有内容.)

git rm -rf --cached .
git add .
Run Code Online (Sandbox Code Playgroud)

这将从存储库中删除所有文件并将其添加回来(这次是尊重您的规则.gitignore).

  • 或者,如果您想从文件夹“foldername”中删除文件,请使用“git rm -rf --cachedfoldername”和“git addfoldername”。这样你就不必提交所有其他文件 (22认同)
  • 效果非常好!谢谢!+1 (5认同)
  • 你让我今天一整天都感觉很好! (3认同)
  • 或者您可以尝试使用git checkout folder_to_ignore / *恢复添加到.gitignore的文件/文件夹 (2认同)
  • 当我将更改推送到 github 时,这对我不起作用。说一切都是最新的!!!! (2认同)
  • 我认为最好添加一个'git ignore'命令来简化这个.因此我们可以随时使用`git ignore path/file`. (2认同)

Nic*_*las 94

要取消已经添加/初始化到存储库的单个文件,即停止跟踪文件但不从系统中删除它: git rm --cached filename

要解开现在位于您的所有文件.gitignore:

首先提交任何未完成的代码更改,然后运行以下命令:

git rm -r --cached .
Run Code Online (Sandbox Code Playgroud)

这将从索引(暂存区域)中删除所有已更改的文件,然后运行:

git add .
Run Code Online (Sandbox Code Playgroud)

承诺:

git commit -m ".gitignore is now working"
Run Code Online (Sandbox Code Playgroud)

  • `git rm --cached filename` 非常有效!谢谢! (8认同)
  • 请务必将您的分支合并回 master 或移动您的指针,因为当我尝试这样做时,我丢失了我的两个功能分支。幸运的是,我没有丢失任何工作,我最近从工作分支进行的所有更新都被重置到主分支,但是根据您的设置,这种行为可能是不可取的。 (4认同)
  • 他确实说过首先提交任何未完成的代码更改...... (4认同)
  • 这对我不起作用 (2认同)

sul*_*rza 30

@Ahmad 的答案是有效的,但如果您只想 git 忽略 1 个特定文件或几个文件,请按照@Nicolas 的建议进行操作

第1步

将文件名添加到 .gitignore 文件

第2步

[从git缓存中删除文件名(文件路径)

git rm --cached filename

第 3 步

提交更改 git add filename

git commit -m "add filename to .gitignore"

它将保持您的 git 历史记录干净,因为如果您这样做git rm -r --cached .并全部添加并提交它们,它将污染您的 git 历史记录(它会显示您在一次提交时添加了很多文件)不确定我是否正确表达了我的想法,但希望您明白这点

  • 另外,在 **Step2** 中,如果您有目录而不是文件,则可以使用: `git rm -r --cached directoryname` (10认同)

小智 30

在cmd窗口中使用下面的git命令,

git rm --cached filename

解释:

git-rm- 从工作树和索引中删除文件

--cached 使用此选项仅从索引中取消暂存和删除路径。工作树文件,无论是否修改,都将被保留。

--来自https://git-scm.com/docs/git-rm


Dee*_*ews 12

我用了一些东西来.gitignore为我生成共同点,我遇到了这个。阅读@Ozesh 答案后,我在 VS Code 中打开,因为它在右下角有一个很好的指示器,显示行尾类型。这是LF,所以我按照建议转换为CRLF,但没有骰子。

然后我查看了行尾,注意到它是使用 UTF16 保存的。所以我使用 UTF8 编码重新保存,瞧,它起作用了。我认为 CRLF 并不重要,所以我将它改回 LF 以确保它仍然有效。

当然,这不是 OP 问题,因为他已经提交了文件,因此它们已经被编入索引,但我想我会分享以防其他人偶然发现这一点。

TLDR ; 如果您还没有提交文件并且 .gitignore 仍然没有得到尊重,那么检查文件编码,并确保它的 UTF8,如果这不起作用,那么也许尝试弄乱行尾。

  • UTF16 是我的罪魁祸首。打开VS代码>打开.gitignore>打开命令提示符>“更改文件编码”>“UTF-8”>保存文件 (3认同)
  • 使用“blah blah”> file.txt(“echo”)在 PowerShell 中创建文件,但文件为 UTF16。修复:`$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'` (2认同)

Gar*_*son 6

在钻了一些兔子洞试图遵循这个问题的答案之后(也许因为我必须在Visual Studio项目中这样做),我发现更简单的方法是

  1. 剪切并粘贴我不想再跟踪的文件到临时位置

  2. 提交那些文件的“删除”

  3. 提交对的修改,.gitignore以排除我临时移动的文件

  4. 将文件移回到文件夹中。

我发现这是解决问题的最直接的方法(至少在视觉工作室中,或者我假设其他基于IDE的环境如Android Studio),而不会意外地在自己的脚上开枪git rm -rf --cached .,之后我正在处理的Visual Studio项目未加载。

  • 我非常喜欢这种方法 - 看起来破坏性较小,即使它不被认为是“正确的”。 (4认同)

Oze*_*esh 6

我通过执行以下操作解决了我的问题:

首先,我是一名Windows用户,但我也遇到过类似的问题。所以,我在这里发布我的解决方案。

有时 .gitignore 无法按预期工作有一个简单的原因。这是由于 EOL 转换行为造成的。

这是一个快速解决方案

编辑 > EOL 转换 > Windows 格式 > 保存

您可以将此归咎于您的文本编辑器设置。

例如:

由于我是一名 Windows 开发人员,因此与 Vim 用户不同,我通常使用Notepad++来编辑文本。

那么发生的情况是,当我使用 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
Run Code Online (Sandbox Code Playgroud)

如果我使用默认记事本打开同一文件,这就是我得到的

## 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 
Run Code Online (Sandbox Code Playgroud)

因此,您可能已经通过查看输出猜到了。.gitignore 中的所有内容都已成为一行,并且由于开头有一个 ##,因此它的作用就好像所有内容都被注释了一样。

解决这个问题的方法很简单:只需使用 Notepad++ 打开 .gitignore 文件,然后执行以下操作

编辑 > EOL 转换 > Windows 格式 > 保存

下次使用 Windows 默认记事本打开同一文件时,所有内容都应正确格式化。尝试一下,看看这是否适合您。


Abr*_*ham 6

我已经完成了echo node_modules >> .gitignore,但没有奏效。

出于某种原因,终端 fromvscode将文件保存在UCS-2 LE BOMgit 中,似乎不接受。

我打开并将文件转换为UTF-8使用Notepad++

在记事本++中更改编码

它现在有效。

我认为他们需要解决这个问题,因为echo "filetoignore" >> .gitignore实际上看起来很方便

  • @Gilboot 如果您将其包含在存储库中,该文件夹会弄乱您的整个体验。推送更改将花费很长时间,并且存储库的大小将非常大,尤其是文件数量。进行此更改将节省您的时间。如果你没有notepad++,你可以简单地用普通notpad打开文件并使用另存为,然后在“保存”按钮左侧,你可以将编码设置为“UTF-8”并保存.gitignore文件。这也会使它起作用 (2认同)

026*_*026 5

就我而言,.gitignore 行末尾的空格是原因。因此请注意 .gitignore 中的空格!


小智 5

在我的情况下,文件开头空白,当我在记事本中打开文件时清楚地显示了该空格,而在Visual Studio Code中却不明显。