Git似乎忽略了我的.gitignore文件-.gitignorefile是否已损坏?Git希望使用哪种文件格式、区域设置或文化?

我的.gitignore:

# This is a comment
debug.log
nbproject/

git状态的输出:

# 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)

我希望debug.log和nbproject/不出现在未跟踪的文件列表中。

我应该从哪里开始解决这个问题?


当前回答

在不向项目添加另一个提交的情况下,一行代码就足以让.gitignore按预期工作:

git rm -r --cached debug.log nbproject

这将从存储库中删除它们,但仍保留它们。简单地说,它会删除与它们相关的任何更改历史记录,并且不会在将来的任何提交中跟踪它们的更改。你可以在这里找到更好的解释。

其他回答

对我来说,以前的答案都没有奏效。我不得不将.gitignore文本复制到exclude.txt文件中,该文件位于

<Your-project-folder>\.git\info

完成后,刷新更改,所有未跟踪的文件都将消失。照常承诺。

在我的情况下,这是因为文件已经存在于存储库中,我试图忽略它。

以下是我为解决问题所做的工作:

将文件复制到临时文件夹从我的项目文件夹中删除它们。提交将这些文件从存储库中删除的更改将这些文件重新添加到我的项目文件夹

到那时,我对这些文件所做的任何更改都被忽略了。

我认为您不能忽略存储库中已经存在的文件。

还可以查看放置.gitignore的目录。

它应该位于项目的根目录中:

./myproject/.gitignore

不在

./myproject/.git/.gitignore

已经有一些很好的答案了,但我的情况很乏味。我在Win10上编辑了一个已安装的PLM(产品生命周期管理)软件的源代码,然后决定:“我可能应该把它做成git repo。”

因此,缓存选项直接对我不起作用。发布给那些在做了大量初始工作后添加了源代码控制的人,gitignore不起作用,但是,你可能会害怕失去大量工作,所以git-rm-cached不适合你。

!重要提示:这真的是因为我在一个太大的“项目”中添加git太晚了,似乎忽略了我的.gitignore。我从来没有提交过。我可以逃避这个:)

首先,我刚刚做到了:

rm -rf .git
rm -rf .gitignore

然后,我必须拍下我的变化。同样,这是一个我已经做过修改的安装产品。对于纯主分支的第一次提交来说太晚了。因此,我需要一个列表,列出我在安装程序后所做的更改,方法是将>changed.log添加到以下任一项:

PowerShell(PowerShell)

# Get files modified since date.
Get-ChildItem -Path path\to\installed\software\ -Recurse -File | Where-Object -FilterScript {($_.LastWriteTime -gt '2020-02-25')} | Select-Object FullName

Bash

# Get files modified in the last 10 days...
find ./ -type f -mtime -10

现在,我列出了我在过去十天里所做的改变(让我们不要在这里讨论最佳实践,而是说,是的,我是自己做的)。

对于一个新的开始,现在:

git init .
# Create and edit .gitignore

我不得不将更改后的列表与不断增长的.gitignore进行比较,并在改进时运行git状态,但我在.gitignore中所做的编辑会随着我的前进而被读取。

最后,我有了所需更改的列表!在我的例子中,它是样板——一些主题工作以及服务器xml配置,这些配置专门用于针对这个软件运行开发系统,我想将其放入一个repo中,供其他开发人员抓取和贡献……这将是我们的主分支,因此提交、推送,最后分支新工作!

这里其他答案没有涉及的一个棘手问题是,如果您有内联注释,.gitignore文件将无法工作,如下所示:

foo/bar # The bar file contains sensitive data so we don't want to make this public

因此,如果您确实有这样的评论,请这样更改它们:

# The bar file contains sensitive data so we don't want to make this public
foo/bar