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文件中的内容继续出现在未跟踪文件列表中。

我用这个来创建忽略文件:

echo "node_modules" > .gitignore

事实证明,双引号导致了我的问题。我删除了忽略文件,然后再次使用了不带引号的命令,结果如预期。我不需要搞乱文件编码。我在使用Cmder的Windows 10机器上。

例子:

echo node_modules > .gitignore

其他回答

即使到目前为止你还没有跟踪这些文件,Git似乎也可以在你将它们添加到.gitignore之后“知道”它们。

警告:首先提交或隐藏当前更改,否则您将丢失它们。

然后从Git存储库的顶部文件夹运行以下命令:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"

已经有一些很好的答案了,但我的情况很乏味。我在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文件中的内容继续出现在未跟踪文件列表中。

我用这个来创建忽略文件:

echo "node_modules" > .gitignore

事实证明,双引号导致了我的问题。我删除了忽略文件,然后再次使用了不带引号的命令,结果如预期。我不需要搞乱文件编码。我在使用Cmder的Windows 10机器上。

例子:

echo node_modules > .gitignore

您也可以使用sudo命令编辑.gitignore文件。我遇到了同样的问题,在执行命令gitstatus时,我仍然可以看到“应该被忽略”的文件。

在使用nano.gitignore而不是sudo nano.gitinore进行编辑时,我可以看到正确的反射。

我的问题是(正如OP所建议的)一个损坏的.gitignore文件。我不相信这是真的,并忽略了这种可能性,直到其他一切都失败了。vi中没有显示损坏,但文件开头有两个字节导致.gitignore文件被忽略。对我来说,这些只有在我键入cat.gitignore时才会出现,它显示:

��# Built application files
*.apk
*.ap_

# ...

我不知道这些结果是如何出现的,但重新创建文件解决了问题。损坏文件的十六进制分析显示如下:

user@dev ~/project/myproject $ xxd -b .gitignore
00000000: 11111111 11111110 00100011 00000000 00100000 00000000  ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000  B.u.i.