2017-04-20 178 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