Vous en avez assez des historiques de commit désordonnés qui encombrent vos dépôts Git et vos pull requests ? Heureusement, Git a la capacité de “écraser les commits,” qui fusionne plusieurs petits commits en un seul. Cela permet de garder votre historique de code propre et organisé, et c'est facile à faire avec quelques commandes.
Pourquoi Squash Commits ?
L'une des règles d'or de la bonne étiquette Git est de s'engager souvent avec de bons messages expliquant ce que font les commits. Cependant, cela peut rapidement devenir un problème si trop de commits sont poussés. Après tout, personne ne veut revoir une pull request avec 40 commits différents, tous prêts à être fusionnés dans master, c'est tout simplement trop encombrant.
Ainsi, avant de pousser vers un référentiel distant comme GitHub, il est recommandé d'écraser ces commits, ce qui les fusionnera tous en un seul grand commit. Tous les messages de commit de ces commits seront ajoutés au “squash commit” afin qu'ils soient toujours tous visibles lorsque vous allez les pousser vers GitHub ou soumettre votre pull request.
Il n'est pas toujours nécessaire non plus d'écraser chaque commit, car il est parfois agréable de diviser les choses si vous travaillez sur plusieurs fichiers différents ou parties du référentiel. Cependant, si vous apportez simplement plusieurs modifications à un seul fichier au fil du temps, vous devriez probablement écraser ces commits.
Il est important de noter que vous ne pouvez pas déjà écraser les commits poussé vers GitHubsans force de poussée, ce qui est une opération destructrice. L'écrasement des commits écrase l'historique de Git, ce qui est bien si vous ne le faites que sur votre machine locale. Si vous le faites sur GitHub, cela nécessite une poussée forcée, ce qui signifie que tous les membres de votre équipe doivent recloner le référentiel pour éviter les conflits.
Pour éviter ces problèmes, il est nécessaire de le faire. Il est préférable d'écraser les commits avant de pousser vers le référentiel distant. Comme c'est généralement le moment où vous voulez le faire de toute façon, ce n'est généralement pas un problème.
Écraser les commits Git avec git merge
Il existe plusieurs façons d'écraser les commits, puisqu'il n'y a pas de “ officiel ;git courge” commande. L'une des plus simples consiste à utiliser git merge avec le drapeau –squash. Cette technique fusionnera les N derniers commits en un seul.
Tout d'abord, vous devez vous assurer que votre référentiel est entièrement propre, sans modifications actives. Vous pouvez vérifier l'état de git pour vérifier que vous n'avez aucune modification locale qui serait rejetée par la réinitialisation.
Ensuite, vous voudrez réinitialiser la branche à la position où elle se trouvait avant l'un des les commits que vous aimeriez écraser ensemble. Par exemple, pour écraser les trois derniers commits, vous utiliserez HEAD~3, qui est techniquement le quatrième commit de l'historique, mais supprimera les trois commits squashables de votre historique.
git reset –hard HEAD~3
Vous pouvez également utiliser un hachage SHA-1 de validation pour référencer directement une validation. Ensuite, nous exécutons git merge –squash, avec la cible de fusion étant HEAD@{1}, qui est la position de HEAD avant la dernière commande.
git merge –squash 'HEAD@{1}' < p>Git a déjà mis en place toutes les modifications avec le message de validation approprié à ce stade, mais il doit être validé :
git commit
Une fois cela fait, vous êtes libre de pousser tous les commits vers votre référentiel source en amont.
Plus de contrôle sur l'écrasement avec le rebase interactif
Si vous ne voulez pas tout écraser en un bit commit, vous pouvez effectuer un rebase interactif pour sélectionner uniquement les commits que vous souhaitez écraser. Le rebasage peut être compliqué, mais c'est facile à faire avec les bonnes étapes.
Tout d'abord, démarrez le rebase interactif en ciblant le commit avant le dernier commit squashable :
git rebase -i TÊTE~3
Cela ouvrira un éditeur de texte, où vous voudrez changer “sélectionner” à “écraser” pour chaque commit que vous souhaitez fusionner.
Git ouvrira alors un autre éditeur, permettant vous permet de créer un nouveau message de commit pour le commit combiné. Enregistrez ceci et le rebasage devrait se terminer.
Rebaser de cette façon fusionnera tous les commits écrasés dans le prochain commit au-dessus d'eux. Dans ce cas, les deuxième et troisième commits ont été fusionnés dans le premier.
Écraser les commits Git avec une interface graphique Git
Comme la plupart des actions dans Git, écraser les commits avec une interface est beaucoup plus facile que de se souvenir et de taper des commandes à chaque fois. En fait, dans GitKraken, vous pouvez simplement contrôler-cliquer sur les commits que vous souhaitez écraser, et faire un clic droit pour appuyer sur “Squash 2 commits” :
Vous pouvez lire notre guide sur les clients GUI Git pour en savoir plus.
CONNEXE : Devriez-vous utiliser un client Git GUI ?
LIRE LA SUITE
- › Comment utiliser et personnaliser le clavier virtuel sur votre Steam Deck
- › Les batteries amovibles des smartphones pourraient faire leur grand retour
- &rsaquo ; 7 raisons pour lesquelles vous devriez abandonner l'éclairage RVB de votre configuration de jeu
- &rsaquo ; Comment faire taire les appels provenant de numéros inconnus sur WhatsApp
- › VMware apporte Windows 11 accéléré en 3D aux Mac Apple Silicon
- › Le pavé tactile Mac ne fonctionne pas ? 10 trucs et astuces à essayer