J'essaie d'annuler toutes les modifications depuis mon dernier commit. J'ai essayé git reset --hard
et git reset --hard HEAD
après avoir visionné ce post . Je réponds avec la tête est maintenant à 18c3773 ... mais quand je regarde ma source locale, tous les fichiers sont toujours là. Qu'est-ce que je rate?
Cela déchaînera tous les fichiers que vous avez éventuellement stockés avec git add
:
git reset
Ceci annulera toutes les modifications locales non validées (elles doivent être exécutées dans la racine du référentiel):
git checkout .
Vous pouvez également rétablir les modifications non validées uniquement dans un fichier ou un répertoire particulier:
git checkout [some_dir|file.txt]
Encore un autre moyen de revenir sur toutes les modifications non validées (plus long à taper, mais fonctionne à partir de n’importe quel sous-répertoire):
git reset --hard HEAD
Cela supprimera tous les fichiers locaux non suivis, ainsi seulement les fichiers suivis par git restent:
git clean -fdx
WARNING:-x
supprimera également tous les fichiers ignorés, y compris ceux spécifiés par .gitignore
! Vous souhaiterez peut-être utiliser -n
pour prévisualiser les fichiers à supprimer.
Pour résumer: l’exécution des commandes ci-dessous est fondamentalement équivalente à fresh git clone
depuis la source originale (mais cela ne re-télécharge rien, c’est beaucoup plus rapide):
git reset
git checkout .
git clean -fdx
Cela est généralement utilisé dans les scripts de construction, lorsque vous devez vous assurer que votre arborescence est parfaitement propre - aucune modification ni fichier d’objet créé localement, ni artefacts ne sont créés, et vous voulez que cela fonctionne très rapidement et que vous ne le fassiez pas. cloner tout le référentiel à chaque fois.
Si vous souhaitez "annuler", toutes les modifications non validées sont exécutées simplement:
git stash
git stash drop
Si vous avez des fichiers non suivis (vérifiez en exécutant git status
]), vous pouvez les supprimer en exécutant:
git clean -fdx
git stash
crée une nouvelle réserve qui deviendra réserve @ {0}. Si vous souhaitez vérifier d'abord, vous pouvez exécuter git stash list
pour voir une liste de vos caches. Cela ressemblera à quelque chose comme:
stash@{0}: WIP on Rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes
Chaque cachette porte le nom du message de validation précédent.
il y a aussi git stash
- qui "bloque" vos modifications locales et peut être réappliqué ultérieurement ou abandonné s'il n'est plus nécessaire
plus info sur le stockage
J'utilise l'arborescence des sources .... Vous pouvez annuler toutes les modifications non validées en 2 étapes simples:
1) juste besoin de réinitialiser le statut du fichier d'espace de travail
2) sélectionnez tous les fichiers de la séquence (commande + a), cliquez avec le bouton droit de la souris et sélectionnez Supprimer.
C'est aussi simple que ça: D
Pour ceux qui sont arrivés ici en cherchant s’ils pouvaient annuler git clean -f -d
, par lequel un fichier créé dans Eclipse a été supprimé,
Vous pouvez faire de même depuis l'interface utilisateur en utilisant "restaurer à partir de l'historique local" pour la référence: restaurer à partir de l'historique local
0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed
0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"
0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD
2->1: git reset
1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD
git reset; git checkout .; git clean -fdx
Ce que je fais c'est
git add . (adding everything)
git stash
git stash drop
Une doublure: git add . && git stash && git stash drop