32

我的.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 ...不是一个选项,因为文件应该在版本控制中(文件中有其他设置)。我只是不想在这些文件上推送我的更改。

4

8 回答 8

67

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

我按以下顺序进行:

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

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

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

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

希望这很清楚

于 2011-10-19T11:27:32.637 回答
46

此处记录了任何错误的步骤之后,我的 git 仍然跟踪 .htaccess ,这有助于:

git update-index --assume-unchanged .htaccess

要恢复:

git update-index --no-assume-unchanged .htaccess
于 2012-06-20T13:00:21.743 回答
13

既然你想:

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

使用过滤器驱动程序,它将:

  • 在结帐阶段,.htaccess使用私人数据完成
  • 在提交阶段清除.htaccess所有敏感数据

内容过滤器驱动程序

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

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

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

于 2010-06-03T10:54:17.690 回答
10

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

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

让我们运行以下命令来忽略.htaccess,config.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
于 2014-04-01T11:33:26.280 回答
8

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

我想你已经add编辑了你的文件,现在正试图忽略它们。

于 2010-06-03T10:37:58.060 回答
7

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

于 2010-06-03T10:36:29.413 回答
4

I do this all the time. I start with configuration files in my repo then decide that I don't want them in there.

You can remove something from your repo by using

git rm --cached <<filename>>
于 2014-06-19T03:40:03.297 回答
2

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

于 2010-06-03T10:34:45.517 回答