Gibt es eine Möglichkeit, habe ich die Commits in neue Repo (dieses Mal die erste Festschreibung ist die LICENSE-Datei) und immer noch die Meta-Informationen commit?
Ja, durch Hinzufügen einer Fernbedienung und Cherry-Picking die Commits auf Ihrem ersten Commit.
# 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 --abbrev-commit
# 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 immer noch die Lizenz auf Ihren vorherigen Repo hinzufügen möchten.
Ja. Sie können Ihr LIZENZ-Commit als erstes Commit durch Rebasieren platzieren.
Rebasing ist eine Möglichkeit, die Commit-Reihenfolge neu zu arrangieren, während alle Commit-Autoren und Commit-Daten intakt bleiben.
Wenn Sie an einem freigegebenen Repo arbeiten, wird es im Allgemeinen davon abgeraten, es sei denn, Ihr gesamtes Team ist git-flent. Für diejenigen, die nicht sind, können sie einfach eine neue Kopie des Repositorys klonen.
So erhalten Sie Ihr LICENCE-Commit als erstes Commit.
1. Aktualisieren und rebase Ihre lokale Kopie
Überprüfen Sie Ihr Projekt aus und legen Sie die Lizenzdatei in einem ON TOP Ihrer aktuellen 3-Stack begehen begehen.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Dann tun ein interaktives Unterfütterungsmaterial auf dem Master-Zweig zu neu anordnen die Commits.
git rebase -i --root
Es wird ein Editor geöffnet. Verschieben Sie die untere Zeile (Ihr "Initial Commit" Commit, das letzte Commit) an den Anfang der Datei. Dann speichere und beende den Editor.
Sobald Sie den Editor verlassen, schreibt git die Commits in der von Ihnen angegebenen Reihenfolge.
Sie haben jetzt Ihre lokale Kopie des Repositorys aktualisiert. do:
git log
zu verifizieren.
2. Kraft schieben Sie Ihren neuen Repo-Zustand
Nun GitHub, dass Ihre Kopie aktualisiert wird, müssen Sie es auf Github zwingen zu drücken.
git push -f origin master
Dies teilt github mit, den Master-Zweig an seinen neuen Standort zu verschieben. In seltenen Fällen wie diesem sollten Sie nur dann Druck ausüben, wenn jeder, der damit arbeitet, über die bevorstehende Änderung informiert ist, sonst wird es Ihre Mitarbeiter verwirren.
3. Synchronisieren Mitarbeiter
schließlich auf GitHub, alle Mitarbeiter müssen dieses Repository synchronisieren.
Zuerst müssen sie saubere Repositories haben als der folgende Befehl kann destruktiv sein, wenn es ungespeicherte Ä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. Jeder sollte jetzt synchron sein.
Sie können dem ursprünglichen Repo noch eine Lizenz hinzufügen. Weitere Informationen finden Sie unter https://help.github.com/articles/open-source-licensing/#how-can-i-go-back-through-my-public-repositories-and-give-them-licenses. – edwinksl
Mögliches Duplikat von [git: Anwenden von Änderungen, die durch Commit in einem Repo auf ein anderes Repo eingeführt wurden] (http://stackoverflow.com/questions/3816040/git-apply-changes-introduced-by-commit-in-one-repo- zu einem anderen-Repo) –