Existe-t-il un moyen d'obtenir les commits dans un nouveau dépôt (cette fois, le premier commit est le fichier LICENSE) tout en conservant les méta-informations de commit?
Oui, en ajoutant une télécommande et en sélectionnant les commits en plus de votre premier 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
Le reste de cette réponse est si vous souhaitez toujours ajouter la LICENCE à votre dépôt précédent.
Oui. Vous pouvez placer votre commit LICENSE comme premier commit en rebasant.
Le rebasage est un moyen git de réorganiser l'ordre de validation tout en conservant tous les auteurs et dates de validation intacts.
Lorsque vous travaillez sur un référentiel partagé, il est généralement déconseillé à moins que toute votre équipe ne parle couramment. Pour ceux qui ne le sont pas, ils peuvent simplement cloner une nouvelle copie du référentiel.
Voici comment vous obtenez votre commit LICENCE en tant que premier commit.
1. Mettez à jour et rebasez votre copie locale
Vérifiez votre projet et placez le fichier LICENSE dans un commit AU-DESSUS de votre pile actuelle de 3 commit.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Ensuite, effectuez un rebase interactif sur la branche principale pour REARRANGER les validations .
git rebase -i --root
Cela ouvrira un éditeur. Déplacez la ligne du bas (votre commit "Initial commit", le commit le plus récent) en haut du fichier. Puis enregistrez et quittez l'éditeur.
Dès que vous quittez l'éditeur, git écrira les commits dans l'ordre que vous venez de spécifier.
Votre copie locale du référentiel est maintenant mise à jour. faire:
git log
vérifier.
2. Forcer le transfert de votre nouvel état de dépôt vers github
Maintenant que votre copie est mise à jour, vous devez forcer la pousser vers github.
git push -f origin master
Cela indiquera à github de déplacer la branche principale vers son nouvel emplacement. Vous ne devriez forcer le push que dans de rares occasions comme celle-ci où tout le monde travaillant avec lui est au courant du changement en attente, sinon cela déroutera vos collaborateurs.
3. Synchronisez les collaborateurs avec github
Enfin, tous les collaborateurs devront se synchroniser avec ce référentiel.
Tout d'abord, ils doivent avoir des référentiels propres car la commande suivante peut être destructrice s'il y a des modifications non enregistrées.
# 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
C'est tout. Tout le monde devrait être synchronisé maintenant.