J'ai fait un git commit
mais je ne l'ai pas encore poussé vers le référentiel. Donc quand je le fais git status
, je reçois '# Votre branche est en avance sur' master 'par 1 commit.
Donc, si je veux revenir en arrière, je peux simplement faire:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
étant donné que quand je le fais, git log
je reçois:
valider eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Date: mar 29 sept 11:21:41 2009 -0700 commit db0c078d5286b837532ff5e276dcf91885df2296 Date: mar 22 sept 10:31:37 2009 -0700
reset --hard
peut entraîner une perte de travail, car cela entraîne l'écrasement de vos fichiers locaux (votre nouveau travail) par ceux du Web (ce qui m'est arrivé). Les questions et réponses sur git doivent indiquer explicitement ce que font leurs commandes et quels sont les risques pour les lecteurs.Réponses:
En fait, lorsque vous utilisez
git reset
, vous devez vous référer à la commettras que vous réinitialisez à ; vous voudriez doncdb0c078
probablement le commit.Une version plus simple serait
git reset --hard HEAD^
de réinitialiser le commit précédent avant la tête courante; de cette façon, vous n'avez pas à copier les ID de validation.Méfiez-vous lorsque vous effectuez une opération
git reset --hard
, car vous pouvez perdre toutes les modifications non engagées que vous avez. Vous voudrez peut-être vérifiergit status
que votre copie de travail est propre ou que vous souhaitez supprimer les modifications qui s'y trouvent.De plus, au lieu de HEAD, vous pouvez utiliser
origin/master
comme référence, comme suggéré par @bdonlan dans les commentaires:git reset --hard origin/master
la source
git reset --hard origin/master
, pour le réinitialiser quelle que soit l'origine.git reset
votre code. Faites votre avenir privez: La différence entrereset
,reset --soft
etreset --hard
(Qu'est - ce qui arrive à votre plus tôtgit add
alias « votre travail » :) Image: liengit status
, aucun changement ne sera affiché et le commit sera supprimé / les modifications seront perdues).git reset --hard HEAD^
car vous perdrez les modifications dans les fichiers validés (vos modifications seront supprimées). Il y a deux branches à cette question: pour annuler un commit mais avoir encore des modifications sur le disque, faites-legit reset --soft HEAD~1
SI vous n'avez PAS poussé vos modifications vers la télécommande
Vérifiez si la copie de travail est propre
git status
.Sinon, vous avez poussé vos modifications vers la télécommande
Cette commande annulera / supprimera le dernier commit / change et vous pourrez ensuite pousser
la source
pour le réinitialiser quelle que soit l'origine.
Cela a été publié par @bdonlan dans les commentaires . J'ai ajouté cette réponse aux personnes qui ne lisent pas les commentaires.
la source
master
- dois-je utiliserorigin/mybranch
alors?git reset HEAD~
qui ne font que remettre le commit en codeIl y a deux branches à cette question (annuler une validation ne signifie pas que je veux perdre toutes mes modifications locales):
1. Pour annuler les dernières modifications de validation et d' annulation dans le fichier validé, procédez comme suit :
git reset --hard HEAD~1
2. Pour annuler la dernière validation mais conserver les modifications locales (sur le disque), procédez comme suit:
git reset --soft HEAD~1
Cette (la dernière commande) vous amènera à l'état que vous auriez été si vous l'aviez fait
git add
.Si vous souhaitez décompresser les fichiers après cela, faites
git reset
Vous pouvez maintenant apporter plus de modifications avant d'ajouter puis de recommencer.
la source
Tapez simplement dans la console:
Cette commande annule toutes les validations locales avant la tête distante
la source
Je crois que l'un d'entre eux répondra à vos besoins
1 - Annuler la validation et conserver tous les fichiers en attente:
git reset --soft HEAD~;
2 - Annulez la validation et supprimez tous les fichiers:
git reset HEAD~;
3 - Annulez le commit et supprimez complètement toutes les modifications:
git reset --hard HEAD~;
voici où j'ai trouvé la réponse
la source
Supprimer le dernier commit avant push
git reset --soft HEAD~1
1
signifie le dernier commit, si vous voulez supprimer deux dernières utilisations2
, etc. *la source
--soft
est un excellent ajout aux réponses possibles, mais pourriez-vous également mentionner pourquoi? Expliquer votre solution est toujours utile. Essayez également de vous en tenir à l'anglais. Merci--soft
- garantit que vous ne perdez pas les modifications du fichier dont vous essayez d'annuler laJ'ai vécu la même situation que celle ci-dessous, car cela était beaucoup plus facile. En passant,
commit-Id
vous pouvez atteindre le commit particulier que vous souhaitez effectuer:Comme vous voulez supprimer votre dernier commit, vous devez donc passer l'
commit-Id
endroit où vous devez déplacer votre pointeur:la source
C'est ce que je fais:
Vérifiez d'abord votre succursale (pour ma
master
succursale de cas ):Ensuite, réinitialisez sur TETE distante ^ ( cela supprimera toutes vos modifications locales ), forcez le nettoyage et tirez:
la source
Une façon consiste à supprimer la branche locale et à extraire cette branche du serveur si votre branche locale est en avance sur distante par plusieurs validations et que vous devez toutes les annuler.
la source
J'ai juste eu le même problème et j'ai fini par faire:
(N est le nombre de commits que git vous montrera)
Cela invite votre éditeur de texte et vous pouvez ensuite supprimer la validation que vous souhaitez en supprimant la ligne qui lui est associée.
la source