Git - Codezeile mit API Key in jeder Datei aus vorherigen commits ändern.
ebody
- git
- github
Hallo,
ich möchte auf github.com ein Repository erstellen und Dateien hochladen. Zuvor arbeite ich aber lokal am Code und verwende zum testen einen API Key. Dieser soll später aber nicht mehr in den öffentlichen Dateien und Dateien der Commit Historie zu finden sein.
Wie geht man am besten vor?
Ist es möglich mit Git eine Codezeile in jeder Datei, auch aus vorherigen commits zu ändern?
Gibt es evtl. ein Zeichen, welches man vor eine Codezeile setzt und so nicht committed wird. Ähnlich wie Dateien, die man in der .gitignore Datei einträgt?
Gruß ebody
Hallo ebody,
wegen der historischen Commits: Wieviel Wert legst Du auf deine History? Kannst Du nicht einfach den aktuellen Stand nach github übertragen, und die History abschneiden?
Den API Key solltest Du keinesfalls irgendwo einchecken. Der gehört in eine Config-Datei, von der es im Git lediglich eine Musterversion gibt. Beim Deploy muss die echte Config-Datei hinzugefügt werden.
Für echte Orwellsche Verhältnisse (rewrite the history) ist, soweit ich das verstehe, der rebase-Befehl dein Freund. Aber ich weiß nicht, wie man das richtig macht.
Rolf
Hallo,
- Ist es möglich mit Git eine Codezeile in jeder Datei, auch aus vorherigen commits zu ändern?
Hierfür habe ich eine Möglichkeit gefunden und konnte in einem sehr übersichtlichen Test Projekt den Code in vergangenen Commits ändern. Wenn ein Repository aber schon mit anderen geteilt wurde, sollte man vorab gut abwägen, ob das sinnvoll ist oder wenn man Verzeichnisse und Dateien hatte, deren Name geändert, die gelöscht, verschoben wurden, kann das bestimmt ganz schön mühselig werden.
Man kann das mit rebase und commit --amend umsetzen.
Hier eine grobe Übersicht und ein Beispiel:
In dem markierten Commit habe ich in der index.html einen API Key eingetragen:
<p>My Api Key: 123456</p>
Die index.html ist in den darauf folgenden Commits mit dem API Key ebenfalls vorhanden und möchte in jedem Commit den API Key im Code ändern in:
<p>My Api Key: strApiKey</p>
git rebase -i f831c62
edit ... 9013402
<p>My Api Key: strApiKey</p>
git add .
git commit --amend
git rebase --continue
4b31c1a
und muss Konflikte lösen. In der betroffenen Datei (index.html) "Accept Both Changes" wählen und den Code anpassen.git add .
git rebase --continue
ef70ecc
und muss Konflikte lösen. In der betroffenen Datei (index.html) "Accept Both Changes" wählen und den Code anpassen.git add .
git rebase --continue
Fertig. Die Commit ID´s haben sich danach geändert und der Code in jeder index.html ist jetzt <p>My Api Key: strApiKey</p>
.
In diesem Kurs https://codewithmosh.com/p/the-ultimate-git-course, den ich übrigens sehr empfehlen kann, wird das alles sehr gut erklärt und gezeigt im Video im Kurs Teil "9- Amending an Earlier Commit".
Zu 2. Gibt es evtl. ein Zeichen, welches man vor eine Codezeile setzt und so nicht committed wird. Ähnlich wie Dateien, die man in der .gitignore Datei einträgt?
Sensible Daten lager ich jetzt immer aus und binde sie ein. Ich habe eine hide.js erstellt, zuvor in der .gitignore eingetragen, in der hide.js var strApiKey = '123456';
Die hide.js binde ich in die jeweilige Datei ein, wo ich sie brauche und kann dort strApiKey verwenden, wenn ich den API Key benötige.
Gruß ebody
Hi,
ich möchte auf github.com ein Repository erstellen und Dateien hochladen. Zuvor arbeite ich aber lokal am Code und verwende zum testen einen API Key. Dieser soll später aber nicht mehr in den öffentlichen Dateien und Dateien der Commit Historie zu finden sein.
Wie geht man am besten vor?
- Ist es möglich mit Git eine Codezeile in jeder Datei, auch aus vorherigen commits zu ändern?
Das klingt nach einem Pre-Commit-Hook. Ich weiß zwar, daß es das gibt, hab aber noch nie selber einen eingesetzt. Details müßtest Du also selber erduckducken.
cu,
Andreas a/k/a MudGuard
Moin,
ich möchte auf github.com ein Repository erstellen und Dateien hochladen. Zuvor arbeite ich aber lokal am Code und verwende zum testen einen API Key. Dieser soll später aber nicht mehr in den öffentlichen Dateien und Dateien der Commit Historie zu finden sein.
Wie geht man am besten vor?
api.key.example
an, die du als Dummy eincheckst und dokumentierst, dass diese Datei mit dem echten API-Key zu befüllen und in api.key
umzubenennen ist.api.key
.api.key
in die .gitignore
.git add api.key.example .gitignore; git commit
Viele Grüße
Robert