我有一个git项目,我使用Visual Studio 2013和Git。
我注意到我的.gitignore
文件中列出的许多文件(如果不是全部)仍然在“团队资源管理器”窗口中列为待处理的更改。
但是,使用bash执行git status
时,我看不到文件(正如预期的那样)。
为什么会发生这种情况,更重要的是,如何让Visual Studio将我的.gitignore
文件视为与git bash相同?
.gitignore
档案:
待定更改窗口(团队资源管理器):
答案 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