Letzte Woche habe ich ein Github-Repo erstellt und vergessen, eine Lizenz für das Repo auszuwählen. Jetzt gibt es bereits 3 große Commits.
Ich habe die 3 Mitwirkenden gefragt, ob es in Ordnung ist, ob ich das Repo lösche und es dann erneut mit demselben Namen erstelle und diesmal die Lizenz beim Erstellen des Repos auswähle, und sie waren in Ordnung, was das ist.
Frage
Gibt es eine Möglichkeit, die Commits in ein neues Repo zu übertragen (diesmal ist das erste Commit die LIZENZ-Datei) und trotzdem die Commit-Metainformationen beizubehalten?
Antworten:
Ja, indem Sie eine Fernbedienung hinzufügen und die Commits zusätzlich zu Ihrem ersten Commit auswählen.
Der Rest dieser Antwort ist, wenn Sie die LIZENZ noch zu Ihrem vorherigen Repo hinzufügen möchten.
Ja. Sie können Ihr LICENSE-Commit als erstes Commit durch erneutes Basieren platzieren.
Das erneute Basieren ist eine Möglichkeit, die Festschreibungsreihenfolge neu zu ordnen, während alle Festschreibungsautoren und Festschreibungsdaten intakt bleiben.
Wenn Sie an einem gemeinsamen Repo arbeiten, wird generell davon abgeraten, es sei denn, Ihr gesamtes Team spricht fließend. Für diejenigen, die dies nicht tun, können sie einfach eine neue Kopie des Repositorys klonen.
So erhalten Sie Ihr LIZENZ-Commit als erstes Commit.
1. Aktualisieren Sie Ihre lokale Kopie und setzen Sie sie neu ein
Überprüfen Sie Ihr Projekt und platzieren Sie die LICENSE-Datei in einem Commit ON TOP Ihres aktuellen 3-Commit-Stacks.
Führen Sie dann eine interaktive Rebase im Hauptzweig durch, um die Commits neu zu ordnen .
Es wird ein Editor geöffnet. Verschieben Sie die unterste Zeile (Ihr Commit "Initial Commit", das letzte Commit) an den Anfang der Datei. Speichern Sie dann den Editor und beenden Sie ihn.
Sobald Sie den Editor verlassen, schreibt git die Commits in der gerade angegebenen Reihenfolge.
Sie haben jetzt Ihre lokale Kopie des Repositorys aktualisiert. machen:
verifizieren.
2. Drücken Sie Ihren neuen Repo-Status auf Github
Nachdem Ihre Kopie aktualisiert wurde, müssen Sie sie zwangsweise auf Github verschieben.
Dadurch wird github angewiesen, den Hauptzweig an seinen neuen Speicherort zu verschieben. Sie sollten Push nur in seltenen Fällen erzwingen, in denen jeder, der damit arbeitet, über die anstehenden Änderungen informiert ist. Andernfalls werden Ihre Mitarbeiter verwirrt.
3. Synchronisieren Sie Mitarbeiter mit Github
Zuletzt müssen alle Mitarbeiter mit diesem Repository synchronisieren.
Zunächst müssen sie über saubere Repositorys verfügen, da der folgende Befehl bei nicht gespeicherten Änderungen destruktiv sein kann.
Das ist es. Jeder sollte jetzt synchron sein.
quelle
Ich hatte ein ähnliches Problem, bei dem ich vergaß, meinem Github ein Repo zu geben, und mehrere Commits hinzufügte, bevor ich meinen Fehler bemerkte.
Ich habe eine ziemlich einfache Lösung gefunden.
Entfernen Sie zuerst die Fernbedienung zum ursprünglichen Repo
git remote remove origin
Zweitens fügen Sie der neuen Gabel auf meinem Github eine Fernbedienung hinzu
git remote add origin <my repo URL>
Dann schob ich mich zum Ursprungsmeister und alle meine Commits tauchten auf meinem Github auf.
quelle
git push --set-upstream origin master
, aber Git macht dich darauf aufmerksam.SourceGit = UrlS
Jetzt hat das Ziel die gleichen Daten wie die Quelle (Sie können auch origin anstelle von origin2 verwenden).
quelle