【问题标题】:How to ignore files which are in repository?如何忽略存储库中的文件?
【发布时间】:2011-11-06 02:13:29
【问题描述】:

我有一个文件 (config.php),它已经提交到 Git 存储库,但我想在本地忽略,即我希望该文件保留在存储库中,但强制 Git 忽略对它的任何更改。

我将文件放入 .gitignore,但它仍被标记为已更改,并且每次我提交某些内容时,Git 仍在尝试对其进行更改。任何想法,我错过了什么或做错了什么?

【问题讨论】:

标签: git gitignore git-rm


【解决方案1】:

如果文件仍然显示在状态中,即使它在 .gitignore 中,请确保它尚未被跟踪。

git rm --cached config.php

如果你只是想在本地忽略它,你也可以让它被 git status 忽略:

git update-index --assume-unchanged config.php

作为commented,请注意使用--assume-unchanged 可能会导致不必要的数据丢失,因为git stash 会将“忽略”文件重置为上游状态,撤消本地更改,而不会发出警告或保存。

【讨论】:

  • 好的,谢谢!如果我将我的分支与另一个分支合并,这个文件会产生一些问题吗?
  • @Nimbus147:这应该不是问题,对该文件的任何更改仍将被忽略(即未添加/提交)。
  • 如果使用 SmartGit,您应该使用 remove 来执行此操作。
  • 有没有办法在远程分支上强制update-index --assume-unchanged?我想将文件保留在 repo 中,但不能被其他人更改,而且不能用于暂存。
  • @p014k 我不知道。对于这种文件,我将其版本化为不同的名称,然后在需要时使用内容文件管理器驱动程序自动生成正确的文件(私有)。例如,该过滤器不会在舞台上处于活动状态。请参阅stackoverflow.com/a/54454356/6309 及其相关链接。
【解决方案2】:

如果文件已经在存储库中,因此在索引/暂存区域中,则更新到 .gitignore 不会改变这种情况。它将继续提交。

要从索引/暂存区域中删除文件,请使用git rm <file>

【讨论】:

  • 如果文件在存储库中但尚未暂存怎么办?我试图忽略 *.log 文件,但我仍然在“更改”下看到它们。我想全部忽略,怎么办?
  • @SandraK 如果该文件的旧版本(文件路径/名称)已经在最后一次提交的仓库中,那么它被认为是跟踪 - '索引'将在其记录中包含该文件,所以status 会继续告诉你这些变化。如果您想忽略 *.log 文件,对于以前跟踪的和当前未跟踪的文件,那么您需要 git rm *.log 并更新您的 .gitignore 文件。首先检查一些日志文件是否真的很重要......很容易忘记那个特殊的;-)
【解决方案3】:

忽略签入的文件:

git update-index --assume-unchanged file

恢复

git update-index --no-assume-unchanged file

全部还原

git update-index --really-refresh 

【讨论】:

  • 很有帮助。还原一个文件有效,但全部还原无效。
猜你喜欢
  • 1970-01-01
  • 2019-10-09
  • 2013-04-17
  • 2020-01-15
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多