777 votes

Comment puis-je effacer mon répertoire de travail local dans git ?

Comment puis-je effacer mon répertoire de travail en git ?

1183voto

dbr Points 66401

Pour réinitialiser un fichier spécifique à la dernière commis de l'état (pour ignorer les modifications non validées dans un fichier spécifique):

git checkout thefiletoreset.txt

Cela est mentionné dans l' git status sortie:

(use "git checkout -- <file>..." to discard changes in working directory)

Pour réinitialiser l'ensemble du référentiel de la dernière commis de l'état:

git reset --hard

À retirer sans traces de fichiers, j'ai l'habitude de simplement supprimer tous les fichiers de la copie de travail (mais pas l' .git/ le dossier!), alors n' git reset --hard ce qui laisse uniquement avec des fichiers validés.

Une meilleure façon est d'utiliser des git clean:

git clean -d -x -f

va retirer sans traces de fichiers, y compris des répertoires (-d) et les fichiers ignorés par git (-x). Remplacer l' -f argument avec -n pour effectuer un essai à blanc ou -i pour le mode interactif et il vous dira ce qui va être supprimé.

Liens pertinents:

164voto

Marko Points 13736
<pre><code></code><p><strong>Edit :</strong> <code></code> est vraiment pratique. <a href="http://www.gitready.com/beginner/2009/01/16/cleaning-up-untracked-files.html"><code></code></a>.</p></pre>

51voto

dbw Points 2246

Toutes les réponses jusqu'à maintenant conservent local s’engage. Si vous êtes vraiment sérieux, vous pouvez ignorer toutes les modifications locales et toutes les modifications locales par la pratique :

Par exemple :

Cela rend votre référentiel local correspondent exactement à l’état d’origine (autres que les fichiers non chaînées).

Si vous avez accidentellement fait cela après il suffit de lire la commande, et pas ce qu’il fait :), utiliser git reflog pour trouver votre vieux commet.

15voto

nobar Points 5849

Vous pouvez créer un commit qui contient un vide de la copie de travail.

Ce est généralement un coffre-fort, non-destructive, car il n'implique pas l'utilisation de la force brute de réinitialisation des mécanismes. Tout d'abord vous cacher tous les contenus sont gérés avec git checkout empty, alors vous êtes libre de passer en revue manuellement et supprimer tout ce qui non géré le contenu reste.

## create and initialize a temporary repo with an empty working copy
(
mkdir ./temp-repo && cd ./temp-repo && git init
touch ./temp-file && git add . && git commit -m "almost empty"
git rm ./temp-file && git commit -m "empty"
git tag empty
)

## fetch the history from the temporary repo
git remote add empty ./temp-repo && git fetch --tags empty && git remote rm empty
gvfs-trash ./temp-repo ## delete the temporary repo

## clear the working copy
git checkout empty

Votre copie de travail devrait être clair de tout contenu géré. Tout ce qui reste, ce sont des fichiers non gérés et l' .git dossier lui-même.

Pour re-remplir votre copie de travail...

git checkout master ## or whatever branch you will be using

13voto

Lennart Koopmann Points 4533

Qu’entendez-vous par « clear » ?

Ou vous souhaitez réinitialiser votre copie de travail vers la dernière version du référentiel ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X