Git: erreurs courantes et comment les corriger

Si vous avez déjà travaillé sur un grand projet, dans lequel, en plus de vous, de nombreux autres programmeurs sont impliqués, vous avez évidemment utilisé Git comme système de contrôle de version. Au cours de l'utilisation de quelque chose, selon le niveau de complexité d'un Git similaire, tout le monde fait des erreurs.


L'auteur du matériel, dont nous publions la traduction aujourd'hui, va discuter des erreurs courantes que les programmeurs font en travaillant avec Git, et parler de la façon de traiter ces erreurs.

Erreur dans le dernier message de validation


Après plusieurs heures de bon travail, il est facile de se tromper dans le message de validation. Heureusement, cela peut être facilement résolu avec la commande suivante:

git commit --amend 

Cette commande ouvrira l'éditeur et vous permettra d'apporter des modifications au dernier message du commit. Personne sauf vous ne devrait savoir que vous avez écrit «Commment initial» avec trois «m».

Erreur dans le nom de la branche


Supposons que l'horloge est presque 15h00 et que vous n'avez pas encore déjeuné. En conséquence, tourmenté par la faim, vous avez nommé un nouveau feature-brunch branche. Miam, tu ne peux rien dire.

Ce problème peut également être résolu. Renommer une branche peut être ainsi que des fichiers de changement de nom avec la commande mv . Il s'agit de la déplacer vers un nouvel endroit avec le nom correct:

 git branch -m feature-brunch feature-branch 

Si vous avez déjà envoyé ce fil au référentiel, vous devez faire quelques autres choses pour le renommer. Vous devez supprimer l'ancienne branche et envoyer la nouvelle au référentiel:

 git push origin --delete feature-brunch git push origin feature-branch 

Modifications de validation aléatoires dans la branche principale


Supposons que vous travaillez sur une nouvelle fonctionnalité et que vous ayez hâte de créer une nouvelle branche pour celle-ci. Vous avez déjà validé un tas de fichiers et tout cela se trouve dans la branche master . Vous pouvez déplacer toutes ces modifications vers une nouvelle branche à l'aide des trois commandes suivantes. Veuillez noter que si vous n'avez pas utilisé, telles qu'appliquées aux modifications, les commandes commit ou stash , elles seront perdues.

 git branch feature-branch git reset HEAD~ --hard git checkout feature-branch 

Par conséquent, une nouvelle branche sera créée, les modifications seront restaurées dans la branche principale à l'état dans lequel elles se trouvaient avant les modifications, et une transition vers la nouvelle branche sera effectuée, qui contiendra toutes les modifications apportées précédemment au master .

Travaillez avec des fichiers que vous avez oublié d'ajouter au dernier commit


Une autre erreur courante lorsque vous travaillez avec Git est que les validations sont effectuées trop tôt et que les fichiers nécessaires n'y pénètrent pas. Supposons que vous ayez manqué un fichier, oublié de l'enregistrer ou que vous deviez apporter une petite modification au fichier pour que le dernier commit soit logique. Dans cette situation, la commande --amend sera à nouveau utile. Ajoutez le fichier manquant à l'index du référentiel et exécutez cette commande:

 git add missed-file.txt git commit --amend 

Après cela, vous pouvez modifier le message de validation ou le laisser tel quel.

Ajout du mauvais fichier au référentiel


Et si votre erreur est exactement l'opposé de la précédente? Que faire si vous avez ajouté un fichier à l'index que vous n'allez pas valider? Il peut s'agir d'un fichier ENV, d'un répertoire de construction de projet, d'une photo de votre chien que vous avez accidentellement enregistrée dans le mauvais dossier. Tout cela peut être corrigé.

Si vos actions se limitent à l'indexation du fichier, mais que vous ne l'avez pas encore validé, il sera très facile de résoudre le problème en utilisant la commande reset :

 git reset /assets/img/misty-and-pepper.jpg 

Si vous avez suffisamment avancé et réussi à valider le changement, sachez que cela peut être résolu. Il vous suffit d'utiliser quelques commandes supplémentaires:

 git reset --soft HEAD~1 git reset /assets/img/misty-and-pepper.jpg rm /assets/img/misty-and-pepper.jpg git commit 

En conséquence, le dernier commit sera annulé, l'image sera supprimée, après quoi le nouveau commit sera placé là où il devrait être.

Et si tout allait mal?


La technique dont nous allons discuter maintenant aide dans les situations où tout va mal. Par exemple, cela se produit lorsque vous êtes trop désireux de copier des solutions prêtes à l'emploi avec StackOverflow et, après le travail, votre référentiel est dans un état pire qu'il ne l'était au tout début. Peut-être que nous sommes tous tombés dans cette situation.

La git reflog affiche une liste de tout ce que vous avez fait. Ensuite, il vous permet d'utiliser les outils Git pour annuler les modifications, pour revenir à l'un des états précédents du référentiel. Il convient de noter que cette méthode mérite d'être envisagée en dernier recours, et avant de l'utiliser, vous devez réfléchir attentivement. Ainsi, vous pouvez répertorier ce qui a été fait avec la commande suivante:

 git reflog 

Git se souvient de toutes nos actions et à la suite de l'exécution de cette commande, vous pouvez voir quelque chose comme ceci:

 3ff8691 (HEAD -> feature-branch) HEAD@{0}: Branch: renamed refs/heads/feature-brunch to refs/heads/feature-branch 3ff8691 (HEAD -> feature-branch) HEAD@{2}: checkout: moving from master to feature-brunch 2b7e508 (master) HEAD@{3}: reset: moving to HEAD~ 3ff8691 (HEAD -> feature-branch) HEAD@{4}: commit: Adds the client logo 2b7e508 (master) HEAD@{5}: reset: moving to HEAD~1 37a632d HEAD@{6}: commit: Adds the client logo to the project 2b7e508 (master) HEAD@{7}: reset: moving to HEAD 2b7e508 (master) HEAD@{8}: commit (amend): Added contributing info to the site dfa27a2 HEAD@{9}: reset: moving to HEAD dfa27a2 HEAD@{10}: commit (amend): Added contributing info to the site 700d0b5 HEAD@{11}: commit: Addded contributing info to the site efba795 HEAD@{12}: commit (initial): Initial commit 

Faites attention à la colonne la plus à gauche de cette liste. Il contient des index. Si vous devez revenir en arrière à un moment donné dans le passé, exécutez la commande suivante, en remplaçant {index} par le lien approprié, par exemple, dfa27a2 . Cette commande ressemble à ceci:

 git reset HEAD@{index} 

Résumé


Nous avons examiné quelques façons de traiter les erreurs qui se produisent lors de l'utilisation de Git. Nous espérons que vous ne ferez pas de telles erreurs et ces méthodes de travail avec Git ne vous seront pas utiles. Et si quelque chose se passe mal, vous saurez quoi faire.

Chers lecteurs! Connaissez-vous des astuces intéressantes pour travailler avec Git? Si oui, merci de les partager.

Source: https://habr.com/ru/post/fr423015/


All Articles