2017-04-20 179 views
0

我的wp-config.php在git下,现在我想忽略它。Git reset恢复被忽略的文件?

我已经将其添加到.gitignore,COMMITED新.gitignore和 然后执行 git update-index --assume-unchanged -- wp-config.php

现在,当我执行git reset --hardwp-config.php文件恢复回来,虽然我希望它忽略它...它是仍然从git中重新获取。任何想法为什么?

+0

你应该删除一个文件,如果你想让它不被git触及。 –

+0

删除'git rm'中的文件? – Broshi

回答

1

.gitignore只适用于未跟踪的文件。只要跟踪文件(添加到索引).gitignore并没有任何影响。如果您希望.gitignore生效,则需要从存储库中删除该文件。

--assume-unchanged是一个非常危险的选择,特别是如果你不知道它是什么意思。你不告诉Git不要触摸这个文件,但是你告诉它这个文件没有改变,不管它在内容中发现了什么。这意味着,如果您切换分支或者如果您使用重置或类似的事情,Git会假定文件未更改,并且愉快地覆盖您通常会警告您的文件所做的任何本地更改,并拒绝覆盖将丢失的更改除此以外。

没有安全的方式告诉Git忽略已跟踪文件的变化,因为这是跟踪文件的感觉。模式是将文件签入为wp-config.php.samplewp-config.php.template或类似文件,并在.gitignore中有wp-config.php

,如果你能控制的wp-config.php另一个对消费者接受的方式是使其看起来对于第二个文件wp-config-local.php或相似,并添加到.gitignore。如果它不存在,它将被忽略,如果它存在,它将覆盖登记在wp-config.php的东西。

+0

因此,除了引用另一个文件(include/require)之外,没有办法'取消'已经检入git的文件?这很奇怪。 – Broshi

+0

正在将文件从存储库中删除。 'git rm file'或'git rm --cached file'只能将其从存储库中删除,但保留工作文件。 (但仅限于你,其他人在更新时会得到删除,之后需要手动恢复该文件)使git忽略对跟踪文件的更改是不可能的,不会。这并不奇怪,但通过设计。如果跟踪文件,您想要跟踪对其的更改,那就是跟踪文件的意义。 – Vampire

+0

幸运的是'--assume-unchanged'实际上并没有让Git覆盖文件,在我做的测试中,但我不确定这是否属于* all * Git版本。你知道的情况*它会*假定文件没有改变并且实际上覆盖了它? – torek