【问题标题】:GIT - Can't ignore .suo fileGIT - 不能忽略 .suo 文件
【发布时间】:2012-07-24 09:58:09
【问题描述】:

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

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

我们尝试了很多方法来将文件添加到 .gitignore 中:

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

我们无法解决这个问题。

【问题讨论】:

  • .gitignore 文件本身是否已添加到 repo 中?
  • 是的在存储库中
  • 我猜这个文件已经被添加了一次,在这个文件上显式地尝试一个 git rm,提交看看它是否仍然被建议为添加的文件。
  • 你能告诉我如何使用命令rm吗,因为我试过了但是命令找不到文件...
  • @SteveB .gitignore 不必添加到存储库即可生效。

标签: c# git


【解决方案1】:

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

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

这将从存储库中删除该文件,而该文件仍在您的硬盘上。

【讨论】:

  • 如果你 rm 了 *.suo 文件,它肯定不会远程推送这些文件。会不会给克隆这个项目的人带来问题?
  • 如果您使用的是 Visual Studio 客户端,则无法从那里执行此操作,您必须使用 cmd shell。但是如果我在 shell 中使用 rm 命令,我会看到带有删除线的 .suo 文件,但如果我通过 VS UI 提交更改,它会重新出现。您必须通过命令行执行上述两个命令。
  • @Waqas 不,Visual Studio 只会为他们创建一个新文件。这是当 .gitignore 排除 *.suo 作为存储库的一部分时很重要。当他们提交时,他们签出的 .gitignore 将阻止他们(或至少阻止他们)签入自己的 SUO 文件。
  • 这对于一些新手来说可能并不明显。这就像一个魅力。要执行此命令,您必须位于 .suo 所在的文件夹中。您需要在 cmd.exe 中运行的第一个命令是更改目录“CD 然后按 Enter 键。默认情况下,您可能看不到 .suo 所在的 .vs 文件夹,因此请确保显示隐藏文件在您的存储库文件夹根中启用。我的文件没有项目名称。只是扩展名。git rm --cached .suo git commit -m "Delete suo file from repository"
  • 如果需要忽略文件夹,并且它已经在远程仓库中。在命令中使用 -r 选项, git rm -r --cached
【解决方案2】:

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

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

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

要撤消此操作,请使用 --no-assume-unchanged

【讨论】:

  • 我收到一条消息“致命:无法标记文件 Web /
  • 请注意,当有人更新文件时,这会导致问题。 Git 将尝试更新该文件,但注意到它已更改并会给您一条错误消息。在任何情况下,--skip-worktree 都比 --assume-unchanged 好,这应该只用于性能原因。
【解决方案3】:

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

git add **/*.suo

【讨论】:

  • 不应从 .gitignore 中删除 .suo 以满足 OP 的要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 2016-04-09
  • 2022-08-21
  • 2011-08-01
  • 2016-05-15
  • 1970-01-01
  • 2012-03-15
相关资源
最近更新 更多