GIT-无法忽略.suo文件


84

我正在尝试用C#编写的应用程序与同事一起使用Git。

我们已经在.gitignore文件中添加了条目“ project1.suo”,但是每次我们其中一个必须提交项目时,Git似乎也告诉我们也要提交文件“ project1.suo”。

我们尝试了许多方法来将文件添加到.gitignore中,如下所示:

*.suo
project1.suo
c:\project\project1.suo

我们无法解决此问题。


2
.gitignore文件本身是否已添加到存储库中?
史蒂夫·B

是的是在存储库中
Laxedur 2012年

3
我猜该文件已被添加一次,请对该文件进行显式尝试git rm,提交并查看是否仍建议作为已添加文件。
史蒂夫·B

您能告诉我如何使用rm命令吗,因为我尝试了但命令找不到文件...
Laxedur 2012年

@SteveB .gitignore不必添加到存储库中即可生效。
Ikke 2012年

Answers:


165

git不会忽略已添加到存储库中的文件。如果要忽略它,则必须从存储库中删除文件:

git rm --cached project1.suo
git commit -m "Delete suo file from repository"

当文件仍在硬盘上时,它将从存储库中删除文件。


如果您管理* .suo文件,则肯定不会远程推送这些文件。对克隆此项目的人会造成问题吗?
Waqas

如果使用的是Visual Studio客户端,则无法从那里进行此操作,必须使用cmd shell。但是,如果我从外壳程序使用rm命令,则会看到带有删除线的.suo文件,但是如果我通过VS UI提交了更改,它将重新出现。您必须通过命令行同时执行以上两个命令。
迈克尔·布莱克本

1
@Waqas不,Visual Studio只会为他们创建一个新文件。这是当.gitignore作为存储库的一部分排除* .suo时很重要的时候。当他们提交时,他们签出的.gitignore将阻止他们(或至少阻止他们)签入自己的SUO文件。
迈克尔·布莱克本

3
对于某些新手来说,这可能并不明显。这就像一个魅力。要执行此命令,您必须位于.suo所在的文件夹中。您需要在cmd.exe中运行的第一个命令是更改目录“ CD <.suo根文件夹的完整路径>,然后按Enter。”默认情况下,您可能看不到.suo所在的.vs文件夹,因此请确保显示隐藏文件在您的存储库文件夹根目录启用我的文件没有一个项目名称只是扩展的git RM名为.suo --cached git的承诺-m“删除从仓库锁文件”。
moto_geek

如果需要忽略文件夹,并且它已经在远程仓库中。在命令中使用-r选项,git rm -r --cached <文件夹路径>
Somnath Kadam

3

我总是回到这个问题上来使用答案中的方法,但是我找到了一个更好的解决方案,那就是忽略对该文件的更改。方法是

git update-index --assume-unchanged project1.suo

要么

git update-index --assume-unchanged .vs/config/applicationhost.config

撤消使用--no-assume-unchanged


我收到一条消息“致命:无法标记文件Web <目录> / <filetoexclude>”
danceerdede

请注意,当有人更新文件时,这将导致问题。Git会尝试更新文件,但会注意到它已更改,并会给您一条错误消息。在任何情况下,--skip-worktree都比更好--assume-unchanged,后者仅出于性能考虑而使用。
IKKE

-4

我有同样的问题。Ikke的解决方案会有所帮助,但不要忘记从.gitignore中删除* .suo条目(如果有)。文件更正后,执行

git add **/*.suo

1
不应从.gitignore中删除.suo以满足OP的要求。
卡托
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.