C'è un modo per ottenere il commit in un nuovo repository (questa volta il primo commit è il file LICENSE) e mantenere comunque le informazioni meta del commit?
Sì, aggiungendo una selezione remota e selezionabile in cima al primo 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
Il resto di questa risposta è se si vuole ancora aggiungere la licenza al vostro repo precedente.
Sì. È possibile inserire il commit LICENZA come primo commit mediante una re-assegnazione.
Il rebasso è un modo per riorganizzare l'ordine di commit mantenendo intatti tutti gli autori di commit e le date di commit.
Quando si lavora su un repository condiviso, è generalmente scoraggiato a meno che l'intera squadra non sia git-fluente. Per quelli che non lo sono, possono semplicemente clonare una nuova copia del repository.
Ecco come viene eseguito il commit della LICENZA come prima commit.
1. Aggiornamento e rebase la copia locale
Partenza il progetto e posizionare il file di licenza un commit in cima al vostro stack corrente 3 commettere.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Poi fare un rebase interattivo sul ramo master per riorganizzare i commit.
git rebase -i --root
Si aprirà un editor. Sposta la riga inferiore (il commit "Initial commit", il commit più recente) nella parte superiore del file. Quindi salva ed esci dall'editor.
Non appena esci dall'editor, git scriverà i commit nell'ordine che hai appena specificato.
Ora è stata aggiornata la copia locale del repository. fare:
git log
da verificare.
2. Forza spingere il vostro nuovo stato di pronti contro termine a GitHub
Ora che la copia è aggiornato, si deve per forza spingerlo a github.
git push -f origin master
Ciò consentirà a github di spostare il ramo master nella nuova posizione. Dovresti forzare il push solo in rare occasioni come questa in cui tutti quelli che lavorano con esso sono consapevoli del cambiamento in sospeso, altrimenti confonderanno i tuoi collaboratori.
3. collaboratori Sincronizza a GitHub
Infine, tutti i collaboratori dovranno sincronizzarsi con questo repository.
In primo luogo devono avere repository puliti come il seguente comando può essere distruttivo se ci sono modifiche non salvate.
# 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
Questo è tutto. Tutti dovrebbero essere sincronizzati ora.
È ancora possibile aggiungere una licenza al repository originale. Vedi https://help.github.com/articles/open-source-licensing/#how-can-i-go-back-through-my-public-repositories-and-give-them-licenses per i dettagli. – edwinksl
Possibile duplicato di [git: applica le modifiche introdotte dal commit in un repository a un altro repository] (http://stackoverflow.com/questions/3816040/git-apply-changes-introduced-by-commit-in-one-repo- to-another-repo) –