La semaine dernière, j'ai créé un dépôt Github et j'ai oublié de sélectionner une licence pour le dépôt. Maintenant, il y a déjà 3 gros commits.
J'ai demandé aux 3 contributeurs si tout allait bien, si je supprime le repo, puis le crée à nouveau avec le même nom et cette fois en sélectionnant la licence lors de la création du repo, et ils vont bien.
Question
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?
Réponses:
Oui, en ajoutant une télécommande et en sélectionnant les commits en plus de votre premier commit.
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.
Ensuite, effectuez un rebase interactif sur la branche principale pour REARRANGER les validations .
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:
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.
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.
C'est tout. Tout le monde devrait être synchronisé maintenant.
la source
J'ai eu un problème similaire où j'ai oublié de fourcher un repo sur mon github et ajouté plusieurs commits avant de réaliser mon erreur.
J'ai trouvé une solution assez simple.
Retirez d'abord la télécommande du référentiel d'origine
git remote remove origin
Deuxièmement, ajoutez une télécommande à la nouvelle fourche sur mon github
git remote add origin <my repo URL>
Ensuite, j'ai poussé vers le maître d'origine et tous mes commits sont apparus sur mon github.
la source
git push --set-upstream origin master
, mais Git vous en fait prendre conscience.SourceGit = UrlS
Maintenant, la destination aura les mêmes données que la source (vous pouvez également utiliser l'origine au lieu de l'origine2)
la source