C'è un modo per ottenere i commit in un nuovo repository (questa volta il primo commit è il file LICENSE) e mantenere comunque le meta info del commit?
Sì, aggiungendo un telecomando e selezionando i commit in cima al tuo 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
# 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 vuoi ancora aggiungere la LICENZA al tuo repository precedente.
Sì. Puoi posizionare il tuo commit LICENSE come primo commit ribasando.
Il rebasing è un modo gits di riorganizzare l'ordine dei commit mantenendo intatti tutti gli autori e le date di commit.
Quando si lavora su un repository condiviso, è generalmente sconsigliato a meno che l'intero team non sia fluente con git. Per quelli che non lo sono, possono semplicemente clonare una nuova copia del repository.
Ecco come ottenere il tuo impegno di LICENZA come primo impegno.
1. Aggiorna e ridisegna la tua copia locale
Controlla il tuo progetto e posiziona il file LICENSE in un commit SOPRA il tuo attuale stack di 3 commit.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Quindi esegui un rebase interattivo sul ramo master per REARRANGE i commit.
git rebase -i --root
Si aprirà un editor. Spostare l'ultima riga (il commit "Initial commit", il commit più recente) all'inizio del file. Quindi salva e chiudi l'editor.
Non appena esci dall'editor, git scriverà i commit nell'ordine appena specificato.
Ora hai aggiornato la tua copia locale del repository. fare:
git log
verificare.
2. Forza il push del nuovo stato del repository su GitHub
Ora che la tua copia è aggiornata, devi forzare il push su GitHub.
git push -f origin master
Questo dirà a github di spostare il ramo principale nella sua nuova posizione. Dovresti forzare il push solo in rare occasioni come questa in cui tutti coloro che ci lavorano sono consapevoli del cambiamento in sospeso, altrimenti confonderà i tuoi collaboratori.
3. Sincronizza i collaboratori su GitHub
Infine, tutti i collaboratori dovranno sincronizzarsi con questo repository.
Per prima cosa devono avere repository puliti poiché 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.