首页 > 解决方案 > Git忽略目录不适用于.vs目录

问题描述

我在让 git 忽略项目中的 .vs 隐藏目录时遇到问题。我有以下结构,我所有的项目文件都在 MyProject 目录中,其中还包括 .vs 目录,我试图忽略它。

root/.git
root/MyProject
root/.gitattributes
root/.gitignore

root/MyProject/.vs

我尝试将一堆忽略命令添加到 .gitignore 文件,但似乎没有一个有效。我试过使用

*.vs
*.vs/
*.vs/*
**/.vs
**/.vs*
**/.vs**
**/.vs/**
**/.vs/*
MyProject/*.vs
MyProject/*.vs/
MyProject/*.vs/*
MyProject/**/.vs
MyProject/**/.vs*
MyProject/**/.vs**
MyProject/**/.vs/**
MyProject/**/.vs/*

我只想忽略 .vs 文件中的所有文件。

请协助。

标签: c#gitgitignore

解决方案


.vs应该做。以防万一:将东西添加到.gitignore中,如果文件已经被跟踪,它将不起作用。它仅适用于未跟踪的文件。

现在,如果您已经在跟踪内容.vs并且不想这样做,那么您可以使用两种方法:

  • git rm --cached .vs

这将摆脱 .vs 目录进行修订它不会触及文件,因为您在工作树上拥有它们。这也意味着,例如,如果您想在一年内返回已包含这些文件的修订版之一,则您可能会覆盖当时拥有的文件内容,这可能会破坏所依赖的任何内容该元数据。

  • git filter-branch或者filter-repo

这些是可以重写分支历史的工具,以便完全删除 .vs 目录。这就像拉大枪一样,不应该掉以轻心,因为这意味着覆盖历史……及其所有含义(超出此详细答案的范围)。以防万一,filter-branch 正在逐步淘汰,而 filter-repo 是一个仍然不在 git 中的脚本,如果我没记错的话。


推荐阅读