J'ai un projet dans lequel j'ai couru git init
. Après plusieurs commits, j'ai fait git status
ce qui m'a dit que tout était à jour et qu'il n'y avait aucun changement local.
Ensuite, j'ai fait plusieurs changements consécutifs et j'ai réalisé que je voulais tout jeter et revenir à mon état d'origine. Cette commande le fera-t-elle pour moi?
git reset --hard HEAD
la source
git checkout path/to/file
ne reviendra que sur les changements locauxpath/to/file
git checkout .
etgit reset [--hard HEAD]
n'a pas fonctionné, j'ai dû faire ungit clean -fd
pour annuler mes modifications.git reset
ne réinitialise pas vos modifications,git reset --hard
fait cela.Remarque: vous pouvez également exécuter
comme
ne pas supprimer les fichiers non suivis, alors que nettoyer git supprimer tous les fichiers du répertoire racine chenillé qui ne sont pas sous suivi git. AVERTISSEMENT - SOYEZ PRUDENT AVEC CELA! Il est utile d'exécuter un essai à sec avec git-clean d'abord, pour voir ce qu'il supprimera.
Ceci est également particulièrement utile lorsque vous obtenez le message d'erreur
Ce qui peut se produire lorsque vous faites plusieurs choses, l'une étant la mise à jour d'une copie de travail lorsque vous et votre ami avez tous deux ajouté un nouveau fichier du même nom, mais il l'a d'abord validé dans le contrôle de source, et vous ne vous souciez pas de supprimer votre copie non suivie .
Dans cette situation, faire un essai à vide vous aidera également à afficher une liste de fichiers qui seraient écrasés.
la source
Re-cloner
.gitignore
(comme les fichiers de construction).gitignore
Voici d'autres commandes que j'oublie quotidiennement.
Nettoyer et réinitialiser
.gitignore
(comme les fichiers de construction).gitignore
Nettoyer
.gitignore
(comme les fichiers de construction).gitignore
Réinitialiser
.gitignore
(comme les fichiers de construction).gitignore
Remarques
Cas de test pour confirmer tout ce qui précède (utilisez bash ou sh):
Voir également
git revert
pour effectuer de nouveaux validations qui annulent les validations antérieuresgit checkout
pour remonter dans le temps aux validations précédentes (peut nécessiter l'exécution des commandes ci-dessus en premier)git stash
commegit reset
ci-dessus, mais vous pouvez l'annulerla source
git clean -f -d -x
: si l'option -x est spécifiée, les fichiers ignorés sont également supprimés. Cela peut, par exemple, être utile pour supprimer tous les produits de constructionSi vous souhaitez annuler toutes les modifications ET être à jour avec le maître distant actuel (par exemple, vous trouvez que la tête principale a avancé depuis que vous l'avez dérivée et que votre push est `` rejeté ''), vous pouvez utiliser
la source
origin
dansgit reset --hard origin/master
(ce qui fonctionne) - sans cela (c'est-à-diregit reset --hard
) rien ne semble être changé.Regardez dans git-reflog. Il répertorie tous les états dont il se souvient (la valeur par défaut est de 30 jours) et vous pouvez simplement vérifier celui que vous souhaitez. Par exemple:
la source
git rebase -i
avait mal tourné (a fini par effacer certains commits en raison d'une erreur d'édition). Grâce à cette astuce je suis de retour en bon état!DANGER AHEAD: (veuillez lire les commentaires. L'exécution de la commande proposée dans ma réponse pourrait supprimer plus que vous ne le souhaitez)
pour supprimer complètement tous les fichiers, y compris les répertoires que j'ai dû exécuter
la source
Après avoir lu un tas de réponses et les avoir essayées, j'ai trouvé divers cas marginaux qui signifient parfois qu'ils ne nettoient pas complètement la copie de travail.
Voici mon script bash actuel pour le faire, qui fonctionne tout le temps.
Exécuter à partir du répertoire racine de copie de travail.
la source
error: pathspec 'HEAD' did not match any file(s) known to git.
git checkout HEAD
git reset --hard
rétablit les fichiers suivis (par étapes ou non),git clean -f -d
supprime les fichiers non suivis,git checkout -- HEAD
pourquoi en avons-nous besoin alors?exécutez simplement -
cela supprimera toutes vos modifications locales. et vous pouvez également l'utiliser plus tard en exécutant -
la source
git stash pop
supprimerait automatiquement la modification cachée pour vousgit stash drop
pour supprimer le dernier état caché sans appliquer à la copie de travail.J'ai rencontré un problème similaire. La solution consiste à
git log
rechercher quelle version du commit local est différente de la version distante. (Par exemple, la version est3c74a11530697214cbcc4b7b98bf7a65952a34ec
).Utilisez ensuite
git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec
pour annuler la modification.la source
J'ai cherché un problème similaire,
Je voulais jeter les commits locaux:
De même que ci-dessous:
Vérifier:
maintenant les validations locales sont perdues, revenant à l'état cloné initial, point 1 ci-dessus.
la source
Vous ne voudrez pas nécessairement / besoin de ranger votre travail / vos fichiers dans votre répertoire de travail, mais au lieu de cela, supprimez-les complètement. La commande
git clean
fera cela pour vous.Certains cas d'utilisation courants pour ce faire seraient de supprimer la corruption générée par des fusions ou des outils externes ou de supprimer d'autres fichiers afin de pouvoir exécuter une nouvelle génération.
Gardez à l'esprit que vous voudrez être très prudent avec cette commande, car elle est conçue pour supprimer les fichiers de votre répertoire de travail local qui ne sont pas suivis. si vous changez soudainement d'avis après avoir exécuté cette commande, vous ne pourrez plus voir le contenu des fichiers supprimés. Une alternative plus sûre consiste à exécuter
git stash --all
qui supprimera tout mais l'enregistrera dans une cachette. Cette réserve peut ensuite être utilisée ultérieurement.
Cependant, si vous voulez vraiment supprimer tous les fichiers et nettoyer votre répertoire de travail, vous devez exécuter
git clean -f -d
Cela supprimera tous les fichiers et tous les sous-répertoires qui n'ont aucun élément à la suite de la commande. Une chose intelligente à faire avant d'exécuter la
git clean -f -d
commande est d'exécuterqui vous montrera un aperçu de ce qui sera supprimé après l'exécution
git clean -f -d
Voici donc un résumé de vos options du plus agressif au moins agressif
Option 1 : supprimer tous les fichiers localement (le plus agressif)
Option 2 : Aperçu de l'impact ci-dessus (Aperçu le plus agressif)
Option 3 : Stockez tous les fichiers (les moins agressifs)
la source
Essayez ceci pour annuler toutes les modifications non validées dans la branche locale
Mais si vous voyez une erreur comme celle-ci:
Vous pouvez accéder au dossier '.git' puis supprimer le fichier index.lock:
Enfin, relancez la commande:
la source
Cette question concerne davantage la réinitialisation / restauration du référentiel plus large, mais si vous souhaitez annuler une modification individuelle, j'ai ajouté une réponse similaire ici:
https://stackoverflow.com/a/60890371/2338477
Réponses aux questions:
Comment annuler un changement individuel avec ou sans changement de conservation dans l'historique Git
Comment revenir à l'ancienne version pour redémarrer à partir du même état
la source