Supprimer un git commit qui n'a pas poussé
j'ai fait un git commit
mais je ne l'ai pas encore poussé au dépôt.
Alors, quand je fais git status
, j'obtiens '# Votre branche est en avance de 'master' en 1 s'engager.
donc, si je veux revenir en arrière, puis-je juste faire:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
étant donné que quand je fais git log
, j'obtiens:
commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Date: Tue Sep 29 11:21:41 2009 -0700 commit db0c078d5286b837532ff5e276dcf91885df2296 Date: Tue Sep 22 10:31:37 2009 -0700
8 réponses
en fait, lorsque vous utilisez git reset
, vous devriez faire référence à la propagation que vous êtes en train de réinitialiser en ; donc vous voudriez probablement la propagation db0c078
.
une version plus facile serait git reset --hard HEAD^
, pour réinitialiser à la propagation précédente avant la tête courante; de cette façon vous n'avez pas à copier autour des identifiants de propagation.
méfiez-vous quand vous faites n'importe quel git reset --hard
, comme vous pouvez perdre n'importe quels changements non engagés que vous avez. Vous pourriez vouloir vérifier git status
assurez-vous que votre copie de travail est propre, ou que vous ne voulez souffler toutes les modifications qui y sont.
en outre, au lieu de tête, vous pouvez utiliser origin/master
comme référence, comme suggéré par @bdonlan dans les commentaires: git reset --hard origin/master
si vous N'avez pas poussé vos modifications à distance
git reset HEAD~1
Vérifier si la copie de travail est propre git status
.
sinon vous avez poussé vos modifications à distance
git revert HEAD
Cette commande va revenir/supprimer le dernier commit/modifier, puis vous pouvez pousser
git reset --hard origin/master
pour le remettre à son origine.
cela a été posté par @bdonlan dans le commentaires . J'ai ajouté cette réponse pour les gens qui ne lisent pas les commentaires.
j'ai vécu la même situation que j'ai fait ci-dessous car c'est beaucoup plus facile.
En passant commit-Id
vous pouvez atteindre le commit particulier que vous voulez aller:
git reset --hard {commit-id}
comme vous voulez supprimer votre dernier commit donc vous devez passer le commit-Id
où vous devez déplacer votre pointeur:
git reset --hard db0c078d5286b837532ff5e276dcf91885df2296
C'est ce que je fais:
première Caisse votre succursale (pour mon cas master
succursale):
git checkout master
puis réinitialiser à la tête distante^ ( il supprimera tous vos changements locaux ), force nettoyer et tirer:
git reset HEAD^ --hard && git clean -df && git pull
supprimer le dernier commit avant de pousser
git reset --soft HEAD~1
1
signifie le dernier commit, si vous souhaitez supprimer les deux dernières utiliser 2
, et ainsi de suite*
une façon serait de supprimer la branche locale et de vérifier cette branche du serveur si votre branche locale est en avance sur remote by multiple commits et que vous devez tous les décommander.