.gitignore不会忽略文件

时间:2010-06-03 10:30:03

标签: git version-control atlassian-sourcetree

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

8 个答案:

答案 0 :(得分:54)

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

我按此顺序继续:

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

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

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

然后你就完成了:无论你做什么改变,都不会推动.htaccess了。困难的部分是按照步骤顺序......

希望这很清楚

答案 1 :(得分:37)

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

git update-index --assume-unchanged .htaccess

要还原:

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

答案 2 :(得分:13)

既然你想:

  • .htaccess保留在Git仓库中(无git rm
  • 中包含本地敏感数据

使用filter driver,它将:

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

content filter driver

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

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

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

答案 3 :(得分:9)

假设以下是.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

e.g。

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

答案 4 :(得分:8)

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

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

答案 5 :(得分:5)

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

完成

答案 6 :(得分:3)

我一直这样做。我从我的回购中的配置文件开始,然后决定我不想在那里。

您可以使用

从回购中删除某些内容
git rm --cached <<filename>>

答案 7 :(得分:2)

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