我有一个使用Visual Studio 2013和Git的git项目。我注意到在我的.gitignore文件中列出的许多,如果不是全部文件仍然被列在Team Explorer窗口的待提交更改中。然而,当使用bash进行git状态检查时,我没有看到这些文件(应该如此)。为什么会发生这种情况,更重要的是,我如何让Visual Studio像git bash一样处理我的.gitignore文件? .gitignore文件请参见上文。 Team Explorer中的待提交更改请参见上文。
.gitignore
中。git status现在是干净的,但Team Explorer仍然显示这些文件已被添加。.gitignore
的更改。希望这能有所帮助。.gitignore
中不会对它们产生任何回溯影响。 - Edward Thomsongit
没有承认列在我的.gitignore
中的文件。我使用PowerShell创建了我的.gitignore
文件,命令为echo '' > .gitignore
。这将创建一个以UCS-2 LE BOM编码的文件,而不是UTF-8。因此,git会在git status
中列出该文件,但指定的文件都不会被忽略,直到我将其转换为UTF-8。所以...要小心使用这样的PowerShell命令创建空文件,尽管我很想加入UTF-16阵营。正如另一个答案所提到的,我应该使用类似于echo '' | Out-File .\.gitignore -encoding Utf8
的命令来最初创建文件,尽管这会创建带有BOM的UTF-8文件。Get-Content -Encoding utf8 .\.gitignore.bak | Out-File -Encoding utf8 .\.gitignore
这是一个老问题,但仍然相关。在我的情况下,在Visual Studio Community 2015上,.gitignore正在被处理但它错误地解释规则。
例如,这个.gitignore文件在CLI git客户端中有效 - 它忽略除/Assets/Scripts子树和.gitignore文件之外的所有内容。
# Ignore everything
*
# But descend into directories
!*/
# Recursively allow files under subtree
!/Assets/Scripts/**
#don't ignore this file
!.gitignore
当VS解析上述.gitignore文件时,它似乎错误地将允许的文件夹解释为:允许此文件夹以及其中所有文件和子文件夹-因此每个子树都会错误地显示在存储库中。为了在Visual Studio中实现与上面代码相同的结果,我不得不将其更改为以下内容:请注意,以下代码适用于VS,但不再适用于Git CLI。
# Ignore everything
*
#But don't ignore the /assets folder
!/Assets/
#Ignore everything inside the assets folder
/Assets/*
#but don't ignore the Assets/Scripts subtree
!/Assets/Scripts
#don't ignore this file
!.gitignore
C:\MyRepository\Source\MyProject\intranet\dotnet
,其中MyRepository
是工作目录,而dotnet
文件夹对应于第二个截图中显示的文件夹。.gitignore
文件位于工作目录中。 - Adam Drewery