Question Jetez les commits locaux dans git


En raison de certains mauvais choix, mon dépôt git local est actuellement de 5 commits avant l'origine, et pas dans un bon état. Je veux me débarrasser de tous ces commits et recommencer à zéro.

Évidemment, la suppression de mon répertoire de travail et le re-clonage le feraient, mais le téléchargement de tout à partir de github à nouveau semble être une exagération, et pas un bon usage de mon temps.

Peut être git revert est ce dont j'ai besoin, mais je ne veux pas finir dix commet avant l'origine (ou même 6), même si le code lui-même revient au bon état. Je veux juste faire comme si la dernière demi-heure ne s'était jamais produite.

Y a-t-il une commande simple qui fera cela? Cela semble être un cas d'utilisation évident, mais je n'en trouve aucun exemple.


Notez que cette question concerne spécifiquement commet, ne pas sur:

  • fichiers non-suivis
  • changements non planifiés
  • changements par étapes mais non engagés

930
2018-02-23 21:33


origine


Réponses:


Si vos dépassements ne sont visibles que pour vous, vous pouvez simplement faire git reset --hard origin/<branch_name> revenir à l'origine.

Faire un git revert fait du Nouveau s'engage à supprimer vieux s'engage d'une manière qui garde l'histoire de tout le monde sain d'esprit.


1618
2018-02-23 21:38



Supprimez simplement votre branche maître locale et recréez-la comme ceci:

git branch -D master
git checkout origin/master -b master

194
2018-02-23 21:38



Essayer:

git reset --hard <the sha1 hash>

pour réinitialiser votre tête à l'endroit où vous voulez être. Utilisez gitk pour voir à quel commit vous voulez être. Vous pouvez également réinitialiser dans gitk.


141
2018-02-23 21:37



Si vous utilisez Atlassian SourceTree application, vous pouvez utiliser l'option de réinitialisation dans le menu contextuel.

enter image description here


41
2018-01-29 20:54



Sur votre tentative de branchement:

git reset --hard origin/<branch_name>

Valide l'inversion (à l'état, sans commits locaux), en utilisant "git log" ou "git status" Par conséquent.


27
2018-03-31 15:17



Supprimer le commit le plus récent:

git reset --hard HEAD~1

Supprimez le commit le plus récent, sans détruire le travail que vous avez effectué:

git reset --soft HEAD~1


12
2018-02-11 14:06



Pour voir / obtenir l'identifiant sha1 du commit, vous voulez aussi revenir

gitk --all

Pour revenir à ce commit

git reset --hard sha1_id

!Remarque. Toutes les validations effectuées après cette validation seront supprimées (et toutes les modifications apportées au projet). Donc d'abord mieux cloner le projet à une autre branche ou copier dans un autre répertoire.


11
2018-05-27 10:07



Pour les validations locales qui ne sont pas activées, vous pouvez également utiliser git rebase -i pour supprimer ou écraser un commit.


7
2017-10-17 21:43



J'ai eu une situation où je voulais enlever le commit qui n'était pas poussé mais le commit était avant un autre. Pour ce faire, j'ai utilisé la commande suivante

git rebase -i HEAD~2 -> il va rebasculer les 2 derniers commit

et j'ai utilisé 'drop' pour la signature de commit que je voulais supprimer.


5
2017-09-26 09:57