En raison de mauvaises décisions en matière de sélection, mon référentiel Git local est actuellement cinq commits avant l'Origin, et n'est pas en bon état. Je veux me débarrasser de tous ces commits et recommencer.
Évidemment, supprimer mon répertoire de travail et procéder à un nouveau clonage suffirait, mais tout télécharger à partir de GitHub semble à nouveau excessif et ne constitue pas une bonne utilisation de mon temps.
Peut-être que git revert
est ce dont j’ai besoin, mais je ne veux pas finir 1 s’engage avant l’Origine (ou même six), même si le code lui-même revient à la bon état. Je veux juste prétendre que la dernière demi-heure ne s'est jamais produite.
Y a-t-il une commande simple qui fera ceci? Cela semble être un cas d'utilisation évident, mais je n'en trouve aucun exemple.
Notez que cette question concerne spécifiquement commits, not à propos de:
Si vos commits excédentaires ne sont visibles que de vous, vous pouvez simplement faire git reset --hard Origin/<branch_name>
pour revenir à l’origine. Cela réinitialisera l'état du référentiel à la validation précédente et annulera toutes les modifications locales.
Faire un git revert
fait nouvea s'engage à supprimer ancien s'engage de manière à préserver l'historique de chacun.
Supprimez simplement votre branche maître locale et recréez-la comme suit:
git branch -D master
git checkout Origin/master -b master
Essayer:
git reset --hard <the sha1 hash>
pour réinitialiser votre tête où vous voulez être. Utilisez gitk pour voir quel commit vous voulez être. Vous pouvez également réinitialiser Gitk.
Supprimer le commit le plus récent:
git reset --hard HEAD~1
Supprimez le dernier commit, sans détruire le travail que vous avez effectué:
git reset --soft HEAD~1
Si vous utilisez Atlassian SourceTree app, vous pouvez utiliser l'option de réinitialisation du menu contextuel.
Sur votre tentative de branche:
git reset --hard Origin/<branch_name>
Validez l'inversion (à l'état, sans commit local), en utilisant "git log
" ou "git status
" par conséquent.
git reset --hard @{u}
* supprime toutes vos modifications locales sur la branche actuelle, y compris les validations. Je suis surpris que personne n'ait encore posté ceci, sachant que vous n'aurez pas à rechercher ce qui vous engage à revenir ou à jouer avec des branches.
* C'est-à-dire, réinitialiser la branche en cours à @{upstream}
- généralement Origin/<branchname>
, mais pas toujours
Pour voir/obtenir l'identifiant SHA-1 du commit que vous voulez revenir aussi
gitk --all
Pour revenir à ce commit
git reset --hard sha1_id
!Remarque. Tous les commits effectués après cette validation seront supprimés (et toutes vos modifications apportées au projet). Il est donc préférable de cloner le projet dans une autre branche ou de le copier dans un autre répertoire.
J'étais dans une situation où je voulais supprimer un 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 rebase les deux derniers commits
Et j'ai utilisé 'drop' pour la signature de validation que je voulais supprimer.
Pour les commits locaux qui ne sont pas poussés, vous pouvez également utiliser git rebase -i
pour supprimer ou écraser un commit.
Supprimer les fichiers non suivis (modifications locales non validées)
git clean -df
Supprimer définitivement tous les validations locales et obtenir la dernière validation à distance
git reset --hard Origin/<branch_name>
Pour ceux intéressés par la solution Visual Studio, voici l'exploration:
Team Explorer
, connectez-vous au référentiel cible.Branches
, cliquez avec le bouton droit de la souris sur la branche qui vous intéresse et sélectionnez View history
.History
et choisissez Reset -> Delete changes (--hard)
.Cela jettera vos commits locaux et réinitialisera l’état de votre rapport sur le commit sélectionné. C'est à dire. Vos modifications après que vous ayez tiré le dépôt seront perdues.
Si votre branche est en avance sur 'Origin/XXX
' par 5,.
Vous pouvez émettre:
git reset --hard HEAD~5
Et il devrait supprimer les 5 derniers commits.
git reset --hard <SHA-Code>
Cela vous sera utile si vous avez commis des erreurs sur votre copie locale et que vous voulez vous assurer que rien ne sera transmis à votre succursale distante par erreur.
Le code SHA peut être obtenu en consultant webVersion de votre tableau de bord git pour le dernier commit de la branche.
De cette façon, vous pouvez être synchronisé avec le dernier commit de la branche.
Vous pouvez effectuer git pull
après avoir terminé la réinitialisation matérielle avec succès pour ne rien confirmer de nouveau, c’est-à-dire que vous obtenez le message.
Votre succursale est à jour avec Origin/<Branch Name>