.gitignore被Visual Studio忽略了吗?

时间:2014-03-18 10:09:56

标签: git visual-studio visual-studio-2012 visual-studio-2013

我有一个git项目,我使用Visual Studio 2013和Git。

我注意到我的.gitignore文件中列出的许多文件(如果不是全部)仍然在“团队资源管理器”窗口中列为待处理的更改。

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

.gitignore档案:

GitIgnore file

待定更改窗口(团队资源管理器):

Pending Changes Window

4 个答案:

答案 0 :(得分:4)

我遇到了与链接文件相同的问题。团队资源管理器声称我正在添加链接文件,因此我将它们全部添加到我的.gitignore。 git status现在很干净,但是Team Explorer继续将这些文件显示为已添加。

右键单击Team Explorer中的文件列表更改并选择“撤消”似乎有效。文件本身未被删除,并且已从我的更改列表中删除。

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

我想在Visual Studio 2017中分享我非常相似的体验,即使在我的情况下,命令行中的git没有确认我.gitignore中列出的文件。

我曾使用Powershell使用命令.gitignore创建echo '' > .gitignore文件。这创建了一个以UCS-2 LE BOM而不是UTF-8编码的文件。因此,git会在git status中列出该文件,但在将其转换为UTF-8之前,没有任何指定的文件被忽略。所以......小心创建一个带有这样一个Powershell命令的空文件,就像我希望获得UTF-16的潮流一样。

正如another answer中所引用的,我应该使用像echo '' | Out-File .\.gitignore -encoding Utf8之类的命令来初始创建文件,尽管它会创建带有BOM的UTF-8文件。

此外,我从yet another answer学到的以下命令将复制文件中的内容并使用常规UTF-8创建新文件而不使用BOM:

Get-Content -Encoding utf8 .\.gitignore.bak | Out-File -Encoding utf8 .\.gitignore

答案 3 :(得分:0)

这是一个老问题但仍然相关。在我的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