8
votes

Comment puis-je modifier une précédente commit?

Je viens de réaliser que j'ai laissé un dossier que je devais ajouter à un commettre comme 5 commits. Dans le message de validation, j'ai dit que le dossier était inclus, et je n'ai pas envie de faire un nouveau commit avec le texte "Oops oublié d'ajouter ce fichier dans Engage #xxxxx"

Quel est le meilleur moyen de modifier un commit précédent afin que je puisse ajouter le fichier?

git

0 commentaires

3 Réponses :


17
votes

COMMITZ votre correctif, puis utilisez git rebase --interactive code> pour réorganiser vos engagements et votre courge les deux commettre. Voir Le livre Git pour plus de détails.

Notez que cela fait que cela fait une mauvaise idée si ces commits ont déjà été poussés déjà quelque part, car vous allez changer l'historique du référentiel. P>

Un exemple de session pourrait ressembler à ceci: p>

% git log -p HEAD~2..HEAD~1
commit 7a4c496956eb269c551bbf027db8b0f2320b65e4
Author: User Name <user@host.tld>
Date:   Fri Feb 3 22:57:31 2012 +0100

    Important changes

diff --git a/a.txt b/a.txt
index 8d7158c..54df739 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,3 @@
 A line
+Another line
+Important line forgotten previously


2 commentaires

J'aimerais une explication plus minutieuse, peut-être même une procédure pas à pas, mais je suppose que c'est un point de départ.


J'ai ajouté un exemple, j'espère que ça vous aide!



4
votes

Vous pouvez utiliser le GIT COMMIT-COMTT --FIXUP pour faire une commission spécialement marquée qui est destinée à être fusionnée avec un commit précédent dont le hachage est . Ceci est idéal pour ajouter des fichiers manquants, ou fixer des fautes de frappe, etc.

Une fois que vous avez le commit de Fixup, vous devez utiliser Git Rebase --interactive --autosquash pour fusionner réellement le Fixup commettre dans le commettre. Le de la Rebase doit être un point de l'historique avant le commit (vous pouvez simplement utiliser ^ < / code> pour la simplicité).

Les mises en garde habituelles à la réécriture de l'histoire s'appliquent, si vous avez déjà publié votre succursale quelque part que d'autres utilisateurs ont tiré, cela causera généralement beaucoup de confusion et de fusionner des problèmes si vous repoussez avec une histoire réécrite. Dans ces cas, il est tout simplement plus simple de pousser la correction en tant que nouveau commit.

Remarque: git config --global Rebase.autosquash true allumera par défaut par défaut, ce qui signifie que vous n'avez pas besoin de passer l'option - AutoSquash à le commandement interactif Rebase plus. C'est une bonne valeur par défaut d'avoir.

Une bonne accueil du travail automatique peut être trouvé ici: https://thoughbot.com/blog / autosquashing-git-commits


0 commentaires

1
votes

Pour faire un git squash . xxx

une fois que vous avez écrasé vos commits - choisissez le E ou ' R 'Pour l'édition.

Choisissez Choisissez pour le dernier commit afin de le préserver.

 Entrez la description de l'image ici


Une autre option consiste à utiliser la branche filtrante

Voici la manière dont vous obtenez les paramètres et vous pouvez les mettre à jour et ré-commister avec les nouvelles valeurs au lieu des anciens. .

dans cet exemple, j'ai changé l'e-mail mais la même demande de message. xxx


0 commentaires