Git: Entfernen Sie die Anmeldedaten aus dem Repository

8

Zuerst: Das ist (hoffentlich) kein Duplikat von this oder dies .

Der aktuelle Status: Ich habe eine Datei mit Anmeldeinformationen für eine interne Datenbank an mein Git-Repository übergeben. Das war in Ordnung, da ich es nur alleine benutzt habe. Dann begann meine Gruppe in diesem Projekt zu klonen, zu pushen und herumzuziehen. Wir haben jetzt mehrere Git-Repositories (ein zentrales und einige Entwickler).

Das Problem: Wir möchten nun den Quellcode und das Git-Repository öffentlich zugänglich machen oder Git zumindest die Details anderer, die zum Code beitragen, verwalten.

Die Frage: Was wäre eine gute Strategie für

?

a) Entfernen Sie die Datei mit den Zugangsdaten aus dem zentralen oder allen Repositories oder

b) ein neues Git-Repository als eine Art "Schnittstelle" zur Außenwelt einrichten?

Wenn Sie (b) wählen, wie können wir Änderungen einfach zurück zum Haupt-Repository kommunizieren?

Aufgrund der bereits weit verbreiteten Distribution möchten wir wirklich kein git rebase oder ein git filter-branch für jedes aktuelle Repository machen.

    
Boldewyn 01.02.2010, 10:11
quelle

4 Antworten

9

Es tut uns leid, aber Sie müssen git filter-branch ausführen, wenn Sie die Anmeldeinformationen aus dem Haupt-Repository löschen möchten. Siehe Entfernen vertraulicher Daten , geschrieben von den GitHub-Mitarbeitern.

Aufgrund des Designs von git können bestehende Klone nicht dazu gezwungen werden, die Datei aus ihren jeweiligen Historien zu löschen.

Sie könnten einen einzelnen Zweig sanieren und ihn zur Grundlage für zukünftige Entwicklungen machen:

%Vor%

Nun müssten Sie den bereinigten Master auf einen neuen Repo pressen, der nur den sauberen Master enthlt:

%Vor%

Bestehende Repos können die neue Fernbedienung hinzufügen und git cherry-pick wechselt bei Bedarf von ihren alten Verzweigungen auf den neuen sauberen Master.

Legen Sie für das neue Repository eine Art von Barriere an, um zu verhindern, dass jemand sensible Daten dorthin schiebt, damit Sie nicht wieder das gleiche Problem haben. Diese Barriere könnte ein menschliches Wesen sein, das das neue zentrale Repository kontrolliert und alle Patches überprüft, um zu entscheiden, was hineingeht.

    
Greg Bacon 01.02.2010, 10:23
quelle
7

Ändern Sie einfach das Passwort für Ihre interne Datenbank und jeden anderen Dienst, der dasselbe Passwort hat. (und dasselbe für jedes andere Passwort, das irgendwo in Ihrer Geschichte existiert).

    
hasen 02.02.2010 02:09
quelle
2

Es gibt keine Möglichkeit, a) ohne Verwendung von Rebase oder Filter-Branch. Aber ich würde sagen, dass es wahrscheinlich besser ist, es jetzt so zu machen, als sich mit der Geschichte für immer zu verstecken. Ich denke, b) könnte getan werden, indem der Verlauf nach einem Commit aufgeteilt wird, das die Anmeldeinformationen entfernt. Das Ergebnis wären zwei Geschichten, die in zwei verschiedenen Repos platziert werden. eine vor der Aufräumung, und eine, die kurz danach "neu startet". Die Geschichte dieser beiden Repos könnte durch Graft-Points in den Repos derjenigen verbunden sein, die sie erreichen müssen die alte Geschichte.

Wie auch immer, du wirst mit einer ganzen Ladung sh * t zu tun haben, und ich würde empfehlen, für a) und filter-branch zu gehen, auch wenn es sehr viel Arbeit ist.

    
kusma 01.02.2010 10:23
quelle
1

Also, wir sind durch und ich würde gerne erzählen, wie wir es schließlich geschafft haben.

Wir waren in der glücklichen Lage, dass zu einem bestimmten Zeitpunkt niemand einen eigenen Zweig hatte. Also, was wir im Grunde genommen gemacht haben, war, dass alle ein letztes Mal ihre Sachen zum zentralen Repository geschoben haben.

Dann haben wir filter-branch wie von der GitHub Crew beschrieben benutzt. Wir hatten dann ein klares zentrales Repository.

Schließlich (und das funktionierte nur, weil niemand einen lokalen Zweig wie erwähnt hatte) löschten wir unsere lokalen Repositories und klonten neue aus dem nun sauberen zentralen.

Um es auf den Punkt zu bringen: So war es ein ziemlich schneller und schmerzloser Eingriff. Nicht elegant, aber es hat funktioniert.

    
Boldewyn 05.02.2010 13:59
quelle

Tags und Links