Ich habe eine Datenbankkonfigurationsdatei mit Standardwerten, die unwichtig sind. Änderungen an dieser Datei enthalten jedoch vertrauliche Informationen, die im Repo nicht nachverfolgt werden sollten.
Ich möchte, dass zukünftige Pulls des Git-Repositorys die Standardversion enthalten, aber alle von Benutzern vorgenommenen Änderungen ignorieren.
Im Folgenden wird eine lokale Konfiguration beibehalten, der Löschvorgang wird jedoch an das Repo weitergeleitet, was zu Problemen bei zukünftigen Pulls führt.
cat "app/dir/config.file" >> .gitignore
git rm --cached app/dir/config.file
Das Folgende erledigt den Job, bleibt aber nicht über den Push zum Repo hinaus bestehen.
git update-index --assume-unchanged app/dir/config.file
Dies scheint eine häufige Anforderung für die Versionskontrolle vertraulicher Informationen zu sein, aber ich kann anscheinend keine Lösung finden.
config.file.dist
, die Standardkonfigurationswerte enthält, und lege diese fest. Wenn eine Kopie ausgecheckt ist, kopieren Sie einfach die.dist
Datei, um eine tatsächliche Konfigurationsdatei zu erstellen, und geben Sie die Werte ein, die Sie ändern möchten.Antworten:
Wie immer hat Github ein großartiges Dokument dazu.
https://help.github.com/articles/ignoring-files#ignoring-versioned-files
Hier ist der relevante Ausschnitt:
quelle
--assume-unchanged
eine lokale Einstellung festgelegt wird. Das bedeutet, dass ein neuer Entwickler jedes Mal, wenn er klont,--assume-unchanged
jede zutreffende Datei benötigt. Wie kann dieses Verhalten propagiert werden?.git-assume-unchanged
(oder etwas anderem) ein. Führen Sie dann den Befehl aus, mit dem Sie Ihre Projektkonfigurationen einrichtencat .git-assume-unchanged | xargs git update-index --assume-unchanged
. Am besten nehmen Sie auch Aliase auf, um diese in Ihrer Projektkonfiguration festzulegen und zu deaktivieren.Ich bin mir nicht sicher, ob dies der "beste" Weg ist ... aber was ich gefunden habe, um zu funktionieren, dauert ein paar Schritte.
Neues Laravel-Beispiel:
git init
.gitignore
Dateien an die gewünschten Ergebnisse an, ohne die Ordner des Anbieters zu verlieren.git add .
git commit -m "first commit"
git rm --cached public /.htaccess
danngit rm --cached .env
git commit
git status
sollte diese Dateien als gelöscht anzeigen.Jetzt können diese bearbeitet werden und Sie können lokale und Produktionsversionen haben. HINWEIS: Möglicherweise müssen Sie alle diese Schritte auch beim ersten Produktionsaufbau wiederholen. Bisher hat das bei mir gut funktioniert.
quelle