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?
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 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.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Führen Sie dann eine interaktive Rebase im Hauptzweig durch, um die Commits neu zu ordnen .
git rebase -i --root
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:
git log
verifizieren.
2. Drücken Sie Ihren neuen Repo-Status auf Github
Nachdem Ihre Kopie aktualisiert wurde, müssen Sie sie zwangsweise auf Github verschieben.
git push -f origin master
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.
# 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. Jeder sollte jetzt synchron sein.