Question Comment annuler un commit git local


Mon problème est que j'ai changé un fichier, par exemple: README, ajouté une nouvelle ligne 'ceci pour ma ligne de test'et enregistré le fichier, puis j'ai émis les commandes suivantes

 git status

 # On branch master
 # Changed but not updated:
 #   (use "git add <file>..." to update what will be committed)
 #   (use "git checkout -- <file>..." to discard changes in working directory)
 #
 #  modified:   README
 #
 no changes added to commit (use "git add" and/or "git commit -a")


 git add README

 git commit -a -m 'To add new line to readme'

Je n'ai pas poussé le code vers github, maintenant je veux annuler ce commit.

Pour cela j'ai utilisé

   git reset --hard HEAD~1

Mais j'ai perdu la ligne nouvellement ajoutéececi pour ma ligne de test'du fichier README. Cela ne devrait pas arriver. J'ai besoin du contenu pour être là. Existe-t-il un moyen de conserver le contenu et d'annuler mon engagement local?


503
2018-01-31 12:14


origine


Réponses:


Juste utiliser git reset sans le --hard drapeau:

git reset HEAD~1

PS: Sur les systèmes basés sur Unix, vous pouvez utiliser HEAD^ qui est égal à HEAD~1. Sur Windows HEAD^ ne fonctionnera pas parce que ^ signale une continuation de ligne. Donc, votre invite de commande vous demandera juste More?.


958
2018-01-31 12:17



Utilisation --soft au lieu de --hard drapeau:

git reset --soft HEAD^

121
2017-08-10 08:02



Si vous êtes au milieu d'un commit (c'est-à-dire déjà dans votre éditeur), vous pouvez l'annuler en supprimant toutes les lignes au-dessus du premier #. Cela annulera le commit.

Vous pouvez donc supprimer toutes les lignes afin que le message de validation soit vide, puis enregistrez le fichier:

It should look like this.

Vous recevrez alors un message qui dit Aborting commit due to empty commit message..


21
2018-03-09 21:09



Utilisez la commande ci-dessous: $ git réinitialiser la tête ~ 1 Après cela, vous pouvez également voir les fichiers qui reviennent comme ci-dessous réponse.

Changements non mis à jour après la réinitialisation: M application / config / config.php M application / config / database.php


1
2018-05-14 13:25



Vous pouvez dire à Git ce qu'il faut faire avec votre index (ensemble de fichiers qui deviendront la prochaine validation) et le répertoire de travail lors de la réinitialisation de git en utilisant l'un des paramètres suivants:

--soft: Seules les validations seront réinitialisées, tandis que l'index et le répertoire de travail ne sont pas modifiés.

--mixed: Cela réinitialisera l'index pour qu'il corresponde à HEAD, tandis que le répertoire de travail ne sera pas touché. Toutes les modifications resteront dans le répertoire de travail et apparaîtront comme modifiées.

--hard: Il réinitialise tout (commits, index, répertoire de travail) pour correspondre à la tête.

Dans votre cas, j'utiliserais git reset --soft pour conserver vos modifications modifiées dans Index et répertoire de travail. Assurez-vous de vérifier cette sortie pour une explication plus détaillée.


1
2018-05-29 10:22