Ich hatte ein ähnliches Problem, bei dem ich vergaß, ein Repo zu meinem GitHub zu forken und mehrere Commits hinzufügte, bevor ich meinen Fehler bemerkte.
Ich habe eine ziemlich einfache Lösung gefunden.
Entfernen Sie zuerst die Fernbedienung aus dem ursprünglichen Repo
git remote remove origin
Zweitens fügen Sie dem neuen Fork auf meinem Github eine Fernbedienung hinzu
git remote add origin <my repo URL>
Dann habe ich auf Origin Master gepusht und alle meine Commits wurden auf meinem Github angezeigt.
Gibt es eine Möglichkeit, die Commits in ein neues Repo zu bekommen (diesmal ist der erste Commit die LICENSE-Datei) und trotzdem die Commit-Metainformationen zu behalten?
Ja, indem Sie eine Fernbedienung hinzufügen und die Commits zusätzlich zu Ihrem ersten Commit auswählen.
# add the old repo as a remote repository
git remote add oldrepo https://github.com/path/to/oldrepo
# get the old repo commits
git remote update
# examine the whole tree
git log --all --oneline --graph --decorate
# copy (cherry-pick) the commits from the old repo into your new local one
git cherry-pick sha-of-commit-one
git cherry-pick sha-of-commit-two
git cherry-pick sha-of-commit-three
# check your local repo is correct
git log
# send your new tree (repo state) to github
git push origin master
# remove the now-unneeded reference to oldrepo
git remote remove oldrepo
Der Rest dieser Antwort ist, wenn Sie die LIZENZ immer noch zu Ihrem vorherigen Repo hinzufügen möchten.
Ja. Sie können Ihren LICENSE-Commit als den ersten Commit platzieren, indem Sie rebasen.
Rebasing ist eine geniale Art, die Commit-Reihenfolge neu zu ordnen, während alle Commit-Autoren und Commit-Daten intakt bleiben.
Wenn Sie an einem gemeinsam genutzten Repo arbeiten, wird im Allgemeinen davon abgeraten, es sei denn, Ihr gesamtes Team beherrscht Git fließend. Diejenigen, die dies nicht tun, können einfach eine neue Kopie des Repositorys klonen.
So erhalten Sie Ihren LICENSE-Commit als ersten Commit.
1. Aktualisieren und rebasen Sie Ihre lokale Kopie
Überprüfen Sie Ihr Projekt und platzieren Sie die LICENSE-Datei in einem Commit AUF Ihrem aktuellen 3-Commit-Stack.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Führen Sie dann einen interaktiven Rebase auf dem Master-Zweig zu REARRANGE durch die Commits.
git rebase -i --root
Es öffnet sich ein Editor. Verschieben Sie die unterste Zeile (Ihr "Initial Commit", das letzte Commit) an den Anfang der Datei. Dann speichern und den Editor verlassen.
Sobald Sie den Editor verlassen, schreibt Git die Commits in der gerade angegebenen Reihenfolge.
Sie haben jetzt Ihre lokale Kopie des Repositorys aktualisiert. tun:
git log
zu überprüfen.
2. Erzwinge das Pushen deines neuen Repo-Status auf Github
Jetzt, da Ihre Kopie aktualisiert ist, müssen Sie sie per Push an Github zwingen.
git push -f origin master
Dadurch wird github angewiesen, den Master-Zweig an seinen neuen Standort zu verschieben. Sie sollten Push nur in seltenen Fällen wie diesem erzwingen, wenn jeder, der damit arbeitet, sich der bevorstehenden Änderung bewusst ist, sonst werden Ihre Mitarbeiter verwirrt.
3. Synchronisieren Sie Mitarbeiter mit GitHub
Schließlich müssen alle Mitarbeiter mit diesem Repository synchronisieren.
Zuerst müssen sie saubere Repositories haben da der folgende Befehl destruktiv sein kann, wenn es nicht gespeicherte Änderungen gibt.
# make sure there are no unsaved changes
git status
# pull the latest version from github
git fetch
# move their master branch pointer to the one you published to github.
git reset --hard origin/master
Das ist es. Alle sollten jetzt synchron sein.