.git是否被Visual Studio忽略?

.git是否被Visual Studio忽略?,git,visual-studio,visual-studio-2012,visual-studio-2013,Git,Visual Studio,Visual Studio 2012,Visual Studio 2013,我有一个使用VisualStudio2013和git的git项目 我注意到,我的.gitignore文件中列出的许多文件(如果不是全部的话)仍然在团队资源管理器窗口中作为挂起的更改列出 但是,当使用bash执行git状态时,我看不到文件(正如预期的那样)。 为什么会发生这种情况,更重要的是,如何让Visual Studio将我的.gitignore文件与git bash一样处理? .gitignore文件: “挂起的更改”窗口(团队资源管理器): 我对链接文件也有同样的问题。团队资源管理器声称

我有一个使用VisualStudio2013和git的git项目

我注意到,我的
.gitignore
文件中列出的许多文件(如果不是全部的话)仍然在团队资源管理器窗口中作为挂起的更改列出

但是,当使用bash执行git状态时,我看不到文件(正如预期的那样)。 为什么会发生这种情况,更重要的是,如何让Visual Studio将我的
.gitignore
文件与git bash一样处理?

.gitignore
文件:

“挂起的更改”窗口(团队资源管理器):


我对链接文件也有同样的问题。团队资源管理器声称我正在添加链接文件,所以我将它们全部添加到我的
.gitignore
。git状态现在是干净的,但是团队资源管理器继续显示这些文件

在团队资源管理器中的文件列表上单击鼠标右键,然后选择“撤消”似乎有效。文件本身没有被删除,它们已从我的更改列表中删除


团队资源管理器似乎没有立即发现对
.gitignore
的更改。希望这有帮助。

要使Visual Studio 2013包含您对.gitignore文件所做的更改,请删除解决方案的.git文件夹中的文件ms-persist.xml。

我想分享我在Visual Studio 2017中的类似经历,即使在我的情况下,命令行上的
git
没有确认my
.gitignore
中列出的文件

我使用Powershell创建了我的
.gitignore
文件,命令是
echo'>.gitignore
。这创建了一个以UCS-2 LE BOM而不是UTF-8编码的文件。因此,git将在
git状态下列出该文件,但在我将其转换为UTF-8之前,没有一个指定的文件被忽略。所以使用这样的Powershell命令创建空文件时要小心,因为我很想使用UTF-16

如中所述,我应该使用类似于
echo''Out File.\.gitignore-encoding Utf8
的命令来最初创建文件,尽管这会创建一个带有BOM表的UTF-8文件

此外,正如我从中了解到的,以下命令将从文件中复制内容,并使用常规UTF-8创建新文件,而不使用BOM表:

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文件时,它似乎错误地将允许的文件夹解释为:Allow this folder,再加上其中的所有文件和文件夹,从而使每个子树错误地显示在存储库中。为了在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
文件位于工作目录中。如果您的文件已标记为“包含的更改”,则否,将它们添加到
.gitignore
不会产生追溯影响。我必须一直这样做-虽然这不是一个永久解决方案-文件会不断弹出,由于我的应用程序,这些文件可能有数百个!对每一项操作都单击“撤消”非常繁琐。+1这是一个糟糕的解决方案,但总比什么都不做要好:(这不起任何作用,它是生成的,在切换“更改”后将重新生成)团队资源管理器中的面板。是的,它将被重新生成,但它也将重新读取.gitignore文件。Visual Studio 2015似乎仍然对
.gitignore
的某些更改感到困惑。删除
ms persist.xml
修复了我认为+1.gitignore无法忽略自身的问题。