【问题标题】:.gitignore for visual studio project is not workingVisual Studio 项目的 .gitignore 不起作用
【发布时间】:2022-02-06 19:20:57
【问题描述】:

我使用的是标准的 Visual Studio .gitignore 文件,但适用于 Windows 的 Git 仍然包含构建文件和其他内容。如何解决这个问题?

我正在使用的 Git 忽略文件:https://github.com/github/gitignore/blob/master/VisualStudio.gitignore Visual Studio 自动生成相同的东西

名称正确,位置正确

当我输入 git status 命令时,它会显示构建文件

【问题讨论】:

  • 文件的位置是否正确?究竟什么是“构建文件和其他东西”?如果您在命令提示符或可以访问 git 的 shell 中 cd 到存储库,并执行git status,它是否也会显示文件?
  • 我们需要更多细节。请更新问题(在 cmets 中太容易丢失细节)。你定制了.gitignore 吗?未被忽略的文件的(相对)路径是什么?命令行 git 显示什么 (gitforwindows.org)?
  • 另外注意文件需要命名为.gitignore,而不是VisualStudio.gitignore
  • @stijn 更新了我的问题

标签: git visual-studio


【解决方案1】:

停止跟踪 gitignore 文件中的文件;
打开命令提示符并导航到包含您的解决方案文件 (.sln) 的目录,然后运行以下命令(前两个命令最后包含点):

  1. 从 Git 索引中删除所有项目(而不是从工作目录或本地存储库中):
    git rm -r --cached . 
  1. 根据gitignore更新Git索引:
    git add .
  1. 提交更改:
    git commit -am "Remove ignored files"

然后打开您的 Visual Studio 并同步您的存储库。 这似乎对我有用。我找到了 git 命令here

【讨论】:

  • 这应该是公认的答案,但是您应该添加有关文件不会消失的原因(即它们已经被跟踪)的解释,并可能添加命令的作用的解释。
【解决方案2】:

我们采用了这种方法:

  1. 检查 .gitignore 文件 - 似乎没问题(bin/Debug 文件夹内容被忽略)
  2. 检查 GIT 存储库中的这些文件(bin/Debug 文件夹内容) - 它们在那里 => 与忽略文件不一致
  3. 在本地删除这些文件并提交和推送(使用 .gitignore 定义缩小 GIT 文件)
  4. (可选)重启 Visual Studio 并执行 Pull
  5. 存储库和 VS 现在似乎处于一致状态

【讨论】:

  • 这与从头开始重新创建存储库相比有效,这是上面一个疯狂的建议。这是要走的路。删除 gitignore 后,读取后即可正常工作。
  • 我不必重新启动 VS。更新我的 .gitignore 后,我只是去了我的解决方案并删除了我不希望 GIT 跟踪的文件,然后签入......就像一个魅力
  • 这太完美了!同步远程仓库以使本地和远程一致对我有用。
  • 这应该是公认的答案 - 轻松解决问题
  • 这种方法只适用于 repo 没有重要历史记录的情况,因为创建新 repo 会丢失该历史记录。
【解决方案3】:

文件已被修改,这意味着它们已经在 git 存储库中您添加 .gitignore 文件(或您明确添加它们),因此您现在不能再“忽略”对它们的更改。

如果可能,重新开始并从头开始创建存储库,但现在进行第一次提交,只添加 .gitignore 文件(顺便说一句,这总是一个好主意),然后是添加所有源文件的第二次提交;然后构建文件将被忽略。

或者,您可以使用交互式变基重写历史记录,方法是修改添加这些文件的提交,并在较早的提交中添加 .gitignore 也不错。或者您可以使用分支过滤来消除这些文件的所有痕迹。而且可能还有其他选择。

【讨论】:

  • 查看 Honza P. 的答案而不是这个答案...这个答案是...矫枉过正...至少可以说
  • 我感谢这个答案的第一句话帮助我理解我遇到的问题或行为。在实际解决问题时,我不会推荐这个答案。
【解决方案4】:

可以停止跟踪任何签入文件的任何更改。您需要首先通过在给定存储库> git rm --cached <file> 中调用以下命令来告诉 git 从其索引中删除文件。然后更新您的 .gitignore 文件以排除该文件。最后提交删除文件。

来自Microsoft Git guide

【讨论】:

  • 这就像一个魅力,应该是接受的答案@SaintMSent
  • @SaintMSent 这绝对应该是公认的答案,完美运行,非常简单!
【解决方案5】:

终于解决了

这个小技巧帮助了我。它会删除所有已缓存为“跟踪”的文件,然后根据 .gitignore 文件重新添加文件

第一:

删除 (git rm) 递归 (-r) 缓存为被跟踪的所有文件

git rm -r --cached .

那么:

添加所有 (git add .) 已更改/不在缓存中的文件;这将按原样重新添加文件,因此不需要“重新保存”文件,它们只会从删除文件的 git 更改中消失(以及由于第一个命令)- 结果是“更改”或 git status 应该只包含现在将被 .gitignore 忽略的文件,如果它们不在 .gitignore 更改之前。

git add .

资源:

https://sigalambigha.home.blog/2020/03/11/how-to-refresh-gitignore/

这对我来说是一场漫长的斗争,当我只想将我的更改合并回 main 时,我终于让我的 dll 安静了!

我的 .gitignore 用于 dotnet 核心项目:

"

\# file types<br>
*.cache<br>
*.dtbcache.v2<br>
*.dll<br>
*.pdb<br>
*.suo<br>
.suo<br>
*.testlog<br>
*.user<br>

\# directories<br>
**/Release

"

【讨论】:

    【解决方案6】:

    我在 .cache 文件中遇到了这个问题,以下步骤为我解决了这个问题:

    1. 添加.gitignore
    2. 暂存并提交
    3. 手动删除 *.cache(在 Windows 资源管理器中查找)
    4. 刷新 VS - 团队资源管理器中的更改 - 更改
    5. 撤消挂起的更改(基本假设,您已提交您打算保留的所有更改!)
    6. *.cache 文件不再在更改中列出

    HTH

    【讨论】:

      【解决方案7】:

      从 VS Code 1.56.0 开始,这对我有用,因为 VS Code 忽略了尚未跟踪但显示为已更新的文件(文件旁边的绿色 U):

      • 对您的 .gitignore 进行编辑以忽略源代码管理侧边栏列为已更新的文件
      • 右键单击源代码管理侧栏中您要忽略的文件之一(它应该已经被您在上一步中手动编码的更改覆盖)并从上下文弹出菜单中选择Add to .gitignore
      • 这会导致 VS Code 重新读取 .gitignore 并刷新源代码管理侧栏中的更改文件列表
      • .gitignore 中涵盖的所有以前显示为“更新”的未跟踪文件现在应该从源代码管理侧边栏中删除

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 2017-12-05
        • 2019-08-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多