2017-04-20 5 views
0

Mein wp-config.php war unter git und jetzt möchte ich es ignorieren.Git Reset stellt die ignorierte Datei wieder her?

Ich habe es zu .gitignore hinzugefügt, verpflichtet die neue .gitignore und dann ausgeführt git update-index --assume-unchanged -- wp-config.php

Nun, wenn ich git reset --hard die wp-config.php Datei ausführen wird wiederhergestellt zurück, obwohl ich es, sie ignorieren wollen ... es ist wird immer noch von git zurückgeholt. Irgendwelche Ideen warum?

+0

Sie sollten eine Datei entfernen, wenn sie nicht von Git berührt werden soll. –

+0

eine Datei wie in 'git rm' entfernen? – Broshi

Antwort

1

.gitignore funktioniert nur für nicht verfolgte Dateien. Sobald eine Datei verfolgt wird (zum Index hinzugefügt), hat .gitignore keinen Effekt. Wenn Sie möchten, dass .gitignore wirksam wird, müssen Sie die Datei aus dem Repository löschen.

--assume-unchanged ist eine sehr gefährliche Option, vor allem, wenn Sie nicht wissen, was es bedeutet. Du sagst Git nicht, dass er die Datei nicht anfassen soll, aber du sagst ihm, dass diese Datei unverändert ist, egal was sie in ihrem Inhalt findet. Das heißt, wenn Sie Verzweigungen wechseln oder Reset oder ähnliche Dinge verwenden, geht Git davon aus, dass die Datei unverändert ist und überschreibt alle lokalen Änderungen, die Sie normalerweise an der Datei vorgenommen haben, normalerweise nicht und überschreibt Änderungen, die verloren gehen würden Andernfalls.

Es gibt keine sichere Möglichkeit, Git zu sagen, um Änderungen an einer bereits aufgespürten Datei zu ignorieren, weil das gegen den Sinn des Verfolgens einer Datei ist. Stattdessen muss die Datei als wp-config.php.sample oder wp-config.php.template oder ähnlich markiert sein und wp-config.php in .gitignore haben.

Eine andere akzeptable Möglichkeit, wenn Sie den Verbraucher von wp-config.php steuern können, ist es, nach einer zweiten Datei wp-config-local.php oder ähnlichem suchen und fügen Sie das zu .gitignore hinzu. Wenn es nicht vorhanden ist, wird es ignoriert, wenn es vorhanden ist, wird es die Sachen vom eingecheckten wp-config.php überschreiben.

+0

Also gibt es keine Möglichkeit, eine Datei, die bereits in git eingecheckt wurde, zu entfernen, außer auf eine andere Datei zu verweisen (include/require)? Das ist seltsam. – Broshi

+0

Untithring entfernt die Datei aus dem Repository. 'git rm file' oder' git rm --cached file', um es nur aus dem Repository zu entfernen, aber die worktree-Datei beizubehalten. (aber nur für Sie, alle anderen werden die Löschung erhalten, wenn sie aktualisieren und die Datei danach manuell wiederherstellen müssen) Es ist nicht möglich, git zu ignorieren, wenn Änderungen an einer verfolgten Datei vorgenommen werden, nein. Das ist nicht komisch, aber vom Design her. Wenn eine Datei verfolgt wird, möchten Sie die Änderungen nachverfolgen, dh das Tracking einer Datei. – Vampire

+0

Glücklicherweise hat '--assume-unverändert' nicht wirklich Git überschreiben die Datei, in Tests, die ich gemacht habe, aber ich bin mir nicht sicher, ob dies für * alle * Git-Versionen gilt. Kennst du Situationen, in denen * angenommen wird, dass die Datei unverändert ist und sie tatsächlich überschrieben wird? – torek

Verwandte Themen