Ich möchte einige meiner Arbeiten zur Schau stellen, indem ich sie auf mein GitHub-Konto hochlade. Es gibt jedoch einige Dateien, die Kennwörter enthalten, z. B. Datenbankverbindungen.
Gibt es eine Möglichkeit, eine Datei mit Git als nicht festschreibbar zu kennzeichnen, sodass sie nicht auf GitHub angezeigt werden kann?
.gitignore
. AFAIK: Es gibt keine hundertprozentigegit
sichere Methode, um das Festschreiben einer bestimmten Datei in allen Fällen zu vermeiden. Dies kann jedoch als eine Funktion angesehen werden, mit der explizite Befehle generische Konfigurationen überschreiben können.Antworten:
Erstens gibt es keine Möglichkeit, dass einige Dateien und Commits in Ihrem lokalen Git-Repository sichtbar sind, aber irgendwie nicht in GitHub angezeigt werden können. Wenn Sie eine in Git festgeschriebene Datei haben, wird diese in GitHub angezeigt.
Zweitens gibt es keine einfache und praktische Möglichkeit, jemals eine einzelne Datei markiert selbst als Aber es gibt „uncommitable.“ Auf jeden Fall eine Möglichkeit , eine Datei in einem Git zu ignorieren Repo: Durch das Hinzufügen der Datei (en) -einschließlich ihren relativen Pfad , wenn benötigt - in eine
.gitignore
Datei :Das Erstellen einer
.gitignore
einfachen Datei ist relativ einfach, da es sich lediglich um eine reine Textdatei handelt. Wenn ich zum Beispiel eineconfig.php
Datei in Ihrem Stammverzeichnis hätte, würden Sie dies tun. vorausgesetzt, Sie verwenden PHP, aber das Konzept gilt für jedes Setup. In diesem Beispiel verwende ich auch Nano als Texteditor. Sie können jedoch auch den Texteditor verwenden, den Sie normalerweise verwenden:Und fügen Sie einfach diesen Dateinamen zu dieser Datei hinzu:
Speichern Sie es und Git ignoriert diese Datei einfach.
Das heißt, was ich für Setups wie dieses tun möchte, ist, eine Beispielkonfiguration mit sensiblen Details im Repository zu neutralisieren, damit ich einen Hinweis darauf habe, welches Konfigurationsdateiformat eine Datei mit folgendem Namen ist:
Auf diese Weise wissen Sie genau, wie die
config.php
Datei eingerichtet werden soll,config.SAMPLE.php
und Sie können sicherstellen, dassconfig.php
Git die eigentliche Datei niemals berührt.Wenn Sie vorhaben, Ihren Code vorzuführen, müssen Sie damit rechnen, dass jemand versucht, diesen Code zu übernehmen und auf irgendeine Weise auf seinem eigenen System zu implementieren. Denken Sie daran, wir sind nicht Sie und ohne eine Beispielkonfigurationsdatei in Ihrem Repo werden die Leute nicht wirklich verstehen, wie man den Code selbst implementiert. Vielleicht denken sie sogar, dass Sie nicht kompetent sind, weil Sie kein grundlegendes Konfigurationsbeispiel angegeben haben.
quelle
database_url = Environment.DATABASE_URL
und einen Kommentar wie oben hinterlassen# postgres://username:password@localhost/dbname
.Sie können auch einen Pre-Commit-Hook hinzufügen, um die Integritätsprüfungen zu implementieren. Das Verzeichnis
.git/hooks
jedes Git-Repositorys enthält einige Beispielskripte.Das aufgerufene Skript
pre-commit
wird ausgeführt, wenn es vor jedem Commit vorhanden ist, und ein Rückgabewert ungleich Null bricht das Commit ab.Sie könnten beispielsweise ein einfaches Skript wie das folgende haben:
Wenn dies
filename
zutrifft, schlägt das Festschreiben fehl.quelle
.gitignore
ist eine weit verbreitete und allgemein verständliche Praxis für jeden, der Git verwendet. Ein Pre-Commit-Skript wird jedoch von den meisten Git-Benutzern nicht wirklich verwendet. Es erfordert einige Setup-Kenntnisse und einen triftigen Grund, warum eine solche Methode der einfachen Verwendung einer.gitignore
Datei vorzuziehen wäre . Dies ist sehr nützlich für einige komplexere Fälle, aber es ist definitiv ein Konzept, das Sie verwenden würden, wenn Sie wirklich wissen, dass Sie es verwenden müssen.Was @JakeGould gesagt hat. In einigen Fällen könnten Sie auch die Verwendung von spezieller Datei Bits machen wie
skip-worktree
oderassume-unchanged
dass die folgende Art und Weise eingestellt werden; Informationen zu den Unterschieden zwischen den beiden finden Sie in der folgenden Antwort zum Stapelüberlauf :Welche versteckt dann zusätzliche Änderungen an einer bereits vorhandenen Datei und welche können Sie verwenden, wenn eine Datei wirklich nach jedem Abruf vorhanden sein soll. Aber ich würde dir raten, es nur zu benutzen, wenn du wirklich weißt, was du tust.
quelle
Verwenden Sie ein
.gitignore
wie @JakeGould sagte. Darüber hinaus einige verwandte Informationen:.gitignore
Verhindert, dass Dateien verfolgt werden. Wenn sie bereits verfolgt werdengit rm --cached
, entfernen Sie sie mit$GIT_DIR/info/exclude
werden ebenfalls ignoriert~/.gitconfig
ebenfalls ignoriert.Weitere Informationen finden Sie in der offiziellen Git-Dokumentation .
quelle
So erweitern Sie die Antworten von Jake und 46: Eine sehr gute Vorgehensweise besteht darin, eine einheitliche Erweiterung für Dateien zu verwenden, in die Sie private Informationen einfügen, und
.gitignore
Dateien mit dieser Erweiterung immer global auszuschließen (wobei die.gitconfig
Datei, wie an anderer Stelle erwähnt, immer ignoriert wird) für Ihren Benutzer).Auf diese Weise können Sie zum Beispiel Folgendes haben:
und wenn Sie
*.exc
global ausgeschlossen haben , wissen Sie, dass es nicht festgeschrieben wird, selbst wenn Sie vergessen, diese bestimmte Datei einzeln auszuschließen.quelle