【问题标题】:.gitignore doesn't ignore files.gitignore 不会忽略文件
【发布时间】:2010-06-03 10:30:02
【问题描述】:

我的 .gitignore 文件被忽略,应该忽略的文件仍然可见。

user@host ~/workdir % git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   .htaccess
#       modified:   application/controllers/statistics.php
#
no changes added to commit (use "git add" and/or "git commit -a")
user@host ~/workdir % cat .gitignore
.htaccess
application/config/config.php
application/config/database.php
user@host ~/workdir %

这些文件在版本控制中,但有一些我不想推送的合理更改。 git rm ... 不是一个选项,因为文件应该在版本控制中(文件中有其他设置)。我只是不想在这些文件上推送我的更改。

【问题讨论】:

标签: git version-control atlassian-sourcetree


【解决方案1】:

我遇到了同样的问题:我想要每个存储库使用不同的 .htaccess 文件,然后我不能,因为 htaccess 文件已经添加到存储库。它现在可以工作了,我可以从任何版本更改任何 .htaccess 文件,而无需 git 推送它们。当 Marc 说“您需要先删除它,然后才能忽略它。这可以使用 git rm 完成”时,他是对的。

我按以下顺序进行:

  • 在某处备份您的 .htaccess 文件
  • 使用 git rm .htaccess 删除 .htaccess 文件
  • 提交此更改(.htaccess 删除)
  • 推送它(git push)

这显然会删除您的 .htaccess 文件

  • 然后编辑 .gitignore 并添加 /.htaccess
  • 提交然后推送
  • 通过恢复之前的备份重新创建 .htaccess 文件

那么您就完成了:您对 .htaccess 所做的任何更改都不会再被推送。困难的部分是按照步骤顺序...

希望这很清楚

【讨论】:

  • 正斜杠!这让我发疯,我的 gitignore 文件中只有 .htaccess
【解决方案2】:

anybug's steps noted here 之后,我的 git 仍然跟踪 .htaccess,这有助于:

git update-index --assume-unchanged .htaccess

要恢复:

git update-index --no-assume-unchanged .htaccess

【讨论】:

  • 您可以通过git update-index --no-assume-unchanged恢复该效果
【解决方案3】:

既然你想:

  • 在 Git 存储库中保留 .htaccess(没有 git rm
  • 里面有本地敏感数据

使用filter driver 会:

  • 在结帐阶段,使用私人数据填写.htaccess
  • 在提交阶段清除所有敏感数据中的.htaccess

然后,您可以对您的涂抹脚本将执行的加密文件进行版本控制:

  • 成为唯一解密的人
  • 用于完成经典(和推/拉).htaccess 文件。

您可以在不会推送的特殊分支中对加密的敏感数据进行版本控制。
即使您确实以某种方式推送了该文件,损害也将是有限的,因为只有您的工作站拥有解密该文件所需的私钥。

【讨论】:

  • +1 用于漂亮的图片和过滤器驱动程序。我想知道你什么时候会提出这是一个版本控制问题等等。 :)
  • +1 用于自动化。我打算建议git update-index --assume-unchanged,它可能仍然可以作为一个简单的解决方案,但这种自动化非常棒。
  • +1 因为任何人都知道如何使用所有这些神秘的 git 东西。这不是我想要的,但仍然是!
【解决方案4】:

假设下面是.gitignore 文件的内容。这里.htaccess在项目的根目录下。

/.htaccess
application/config/config.php
application/config/database.php

让我们运行以下命令来忽略.htaccessconfig.phpdatabase.php 文件。

badelal143@gmail.com:work-dir$ git update-index --assume-unchanged .htaccess
badelal143@gmail.com:work-dir$ git update-index --assume-unchanged application/config/config.php
badelal143@gmail.com:work-dir$ git update-index --assume-unchanged application/config/database.php

如果您想重新开始跟踪它:

badelal143@gmail.com:work-dir$ git update-index --no-assume-unchanged path/to/file

例如

badelal143@gmail.com:work-dir$ git update-index --no-assume-unchanged .htaccess

【讨论】:

  • 这对我有用。我的代码在项目的/code/ 目录中。 $ git update-index --assume-unchanged code/.htaccess。 SourceTree 不再跟踪它。
  • 这是唯一对我有用的东西。快把我逼疯了,谢谢
【解决方案5】:

忽略 git 中的文件并不意味着您不会推送它们。这意味着您不会对它们进行版本控制。如果您不想推送,我建议您创建一个本地分支,其中包含本地机器的内容,然后将必要的更改合并到您将推送到远程的分支。

我认为您已经added 您的文件,现在正试图忽略它们。

【讨论】:

  • 我现在使用的另一种方法是隐藏本地更改并在合并/重新定位后将隐藏的内容弹出。
  • 我在我的忽略列表中有这个文件,并且以某种方式“添加”了它。好电话@Naufal
  • 没有真正回答这个问题,但@anybug 的回答回答了。
【解决方案6】:

.htaccess 文件似乎已经添加到版本控制中。您需要先将其删除,然后才能忽略它。这可以使用git rm来完成

【讨论】:

  • 我知道,但我不想删除该文件。我只想忽略这些变化
  • 如果版本控制中有 .htaccess 的版本,但您只是不想提交任何更改,.gitignore 将不起作用。据我所知,没有选择。只是不要将该文件添加到提交中。
  • 您可以使用 git rm --cached 将文件保留在目录中,但将其从索引中删除
【解决方案7】:

我一直这样做。我从我的仓库中的配置文件开始,然后决定我不希望它们在那里。

你可以使用

从你的仓库中删除一些东西
git rm --cached <<filename>>

【讨论】:

    【解决方案8】:

    这个问题困扰了我好几天。 .htaccess 文件已在版本控制下并已被修改。

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 2021-09-29
      • 2021-09-24
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2019-04-29
      相关资源
      最近更新 更多