352 votes

Comment puis-je séparer à nouveau mes fichiers après avoir effectué un commit local?

J'ai fait la commande suivante

 git add <foo.java>
git commit -m "add the foo java"
 

Comment puis-je supprimer mon commit local maintenant et rendre foo.java dans un état non démarré?

Si je tape git reset --hard , j’ai trouvé qu’il me permettait de revenir à modify foo.java.

Merci

593voto

Antti Points 4673

git reset --soft HEAD^ devrait faire ce que vous voulez. Après cela, vous aurez les premiers changements dans l'index (visibles avec git diff --cached ), et vos derniers changements ne sont pas transférés. git status ressemblera alors à ceci:

 # On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   foo.java
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   foo.java
#
 

Vous pouvez alors faire git add foo.java et valider les deux modifications en même temps.

116voto

Ryan Stewart Points 46960

Utilisation:

 git reset HEAD^
 

Cela fait une réinitialisation "mixte" par défaut, qui fera ce que vous avez demandé; mettez foo.java dans unstaged, en supprimant le commit le plus récent.

40voto

wRAR Points 13223

git reset --soft est juste pour ça: c'est comme git reset --hard , mais ne touche pas les fichiers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X