2009-07-22 6 views
6

Dans un répertoire de travail svn, je peux'rm' + 'svn update' équivalent dans Git?

  1. faire quelques changements dans les fichiers dans le répertoire de travail
  2. supprimer tous les changements que j'ai fait par rm tous les fichiers source dans ce répertoire, mais garder mon svn répertoire)
  3. récupérer ce que le tronc supposé en utilisant 'svn update' et svn va télécharger toute la source dans mon répertoire de travail.

Existe-t-il une commande équivalente dans git? pouvez-vous s'il vous plaît dites-moi comment faire cela?

+2

Il y a svn revert; vous n'avez pas besoin de supprimer tous les fichiers que vous avez modifiés. – balpha

+0

'svn revert' ne supprimera pas les fichiers ajoutés, je pense. – Bombe

Répondre

9
git reset --hard 

qui est synonyme de « git reset --hard HEAD » devrait être ce que vous recherchez.

Utilisez-le avec précaution car il supprimerait efficacement toute modification en cours dans votre répertoire de travail. Voir "Undoing in Git"

Remarque: comme Charles Bailey mentionne dans le commentaire, et in his answer, cela ne supprimerait pas les fichiers non suivis. Pour ce git clean est le bon outil. Voir son answer for more, mais aussi la question SO "How do you remove untracked files from your git working copy?", ou l'article Git-Ready "cleaning up untracked files".

Donc, si nous voulions faire un grand nettoyage:

$ git clean -n -d -x 

Cette commande nettoierait les fichiers répertoriés dans le fichier .gitignore du projet ainsi que la suppression d'autres fichiers et répertoires qui aren » t nécessaire.
Comme toujours, utilisez précaution lorsque vous utilisez git clean, et assurez-vous de vérifier ce que vous effacez réellement.

Remarque, vous souhaiterez peut-être move your untracked files instead.

+0

Il peut être intéressant de noter que cela ne supprime pas les fichiers non suivis (nouveaux ou ignorés) que la recette svn de l'OP. –

4
  1. Vous voulez jeter toutes les modifications apportées aux fichiers dans votre répertoire chenillés travail
  2. Vous êtes à la racine de votre répertoire de travail

    caisse git $.

Cela va récursivement vérifier (restaurer) tous les fichiers qui sont en cours de suivi de la dernière validation dans la branche (tête) en cours.

2

En supposant que vous êtes à la racine de votre copie de travail.

Vous voulez faire un nettoyage pour supprimer tous les fichiers non suivis, faites d'abord un essai à sec pour vous assurer qu'il ne va rien écraser auparavant. (Vous voudrez peut-être enquêter sur le répertoire (-d) et ne pas utiliser ignorer les règles (-x) options.) Puis

git clean -n 

exécuter « pour de vrai ».Puis, extrayez les fichiers non modifiés de l'index pour tous vos fichiers suivis.

git checkout . 
+0

Bon point. +1 J'ai lié votre réponse dans la mienne. – VonC

Questions connexes