【问题标题】:Adding file expressions to gitignore file causes source files to be flagged as deleted将文件表达式添加到 gitignore 文件会导致源文件被标记为已删除
【发布时间】:2017-05-18 18:01:42
【问题描述】:

我刚刚开始了一个使用 Git 作为源代码控制的新 Visual Studio 项目。我需要创建一个 .gitignore 文件,因为当我执行“git status”时,我所有的 *.dll 和 *.pdb 文件都显示为修改后的文件。即使添加 .gitignore 并在文件中添加 *.dll 和 *.pdb,“git status”命令仍然显示文件。

我在某处读到我需要做的就是执行: 混帐 rm -r 。 --缓存

但是当我这样做时,“git status”现在将我所有的 .cs 文件显示为已删除!

我现在该怎么办?在 Visual Studio 中,我会在每个 .cs 文件旁边看到已删除的图标,但它也会在 Staged 部分显示已删除的文件。此外,它在“更改”选项卡中将 .cs 文件显示为“已添加”。

谁能解释一下。我不是 Git 专家。

谢谢,

【问题讨论】:

  • 如果您不确定存储库的状态,您可以在本地擦除所有内容并从远程下载旧状态。我喜欢思考问题的方式是 1) 清理忽略文件并提交更改。由于这些是构建工件,因此只需从文件系统中删除它们是安全的。 2) 修复并提交 .gitignore
  • 然后记住你的第一个提交应该是.gitingore。你可以script this into init

标签: c# git


【解决方案1】:

如果文件显示为已修改,那是因为这些文件已经是先前修订的一部分,因此当您告诉 git 从缓存中删除它们时,它们将被删除 关于新修订与前一个修订的关系。将文件添加到 .gitignore 仅适用于 git 已经跟踪的文件。因此,如果您允许将文件从修订版中“删除”并提交,您会很好,因为它们不会在下一次之后的修订版中添加... 但是如果您向前推进几个修订,然后决定签出具有这些文件的这些修订之一,git 可能会拒绝这样做,因为它会覆盖您在工作树上拥有的那些....这导致我进入以下评论:您应该得到删除那些已经提交的修订版本中的文件,以便这些文件不在分支的历史记录中。

【讨论】:

  • 如何摆脱已经提交的修订,使文件不在分支的历史记录中?
  • 这是一个被反复询问的问题。最简单的方法是: - 检出最新的 good 版本(它不包含您想要删除的文件)。 - 开始挑选添加(修改)文件的修订版,并通过删除不需要的文件来修改它们。
  • 也可以考虑改写历史:stackoverflow.com/questions/16558782/…
猜你喜欢
  • 2018-09-19
  • 2017-09-18
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 2012-08-18
  • 2018-05-25
相关资源
最近更新 更多