.gitignore不会忽略文件

Fu8*_*u86 31 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 %
Run Code Online (Sandbox Code Playgroud)

这些文件处于版本控制状态,但是我不想推送明显的变化.git的RM ......是不是一种选择,因为这些文件应该在版本控制研究(与在文件中其他设置).我只是不想推动我对这些文件的更改.

小智 54

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

我继续按顺序进行:

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

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

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

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

希望这很清楚

  • +1一步一步子弹和超清楚的解释 (4认同)

tab*_*itu 37

anybug的步骤之后,我的git仍然跟踪.htaccess,这有助于:

git update-index --assume-unchanged .htaccess
Run Code Online (Sandbox Code Playgroud)

要还原:

git update-index --no-assume-unchanged .htaccess
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过`git update-index --no-assume-unchanged`恢复该效果 (2认同)

Von*_*onC 13

既然你想:

  • 保持.htaccessGit回购(不git rm)
  • 本地敏感数据

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

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

内容过滤驱动程序

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

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

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


小智 9

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

/.htaccess
application/config/config.php
application/config/database.php
Run Code Online (Sandbox Code Playgroud)

让我们运行下面的命令忽略.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
Run Code Online (Sandbox Code Playgroud)

如果您想再次开始跟踪它:

badelal143@gmail.com:work-dir$ git update-index --no-assume-unchanged path/to/file
Run Code Online (Sandbox Code Playgroud)

例如

badelal143@gmail.com:work-dir$ git update-index --no-assume-unchanged .htaccess
Run Code Online (Sandbox Code Playgroud)


Nou*_*him 8

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

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

  • 我现在使用的另一种方法是隐藏本地更改并在合并/重新定位后弹回存储. (2认同)

Mar*_*arc 5

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

  • 您可以使用git rm --cached将文件保留在目录中,但将其从索引中删除 (5认同)

Jas*_*ton 5

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

您可以使用以下命令从存储库中删除某些内容

git rm --cached <<filename>>
Run Code Online (Sandbox Code Playgroud)