web-dev-qa-db-fra.com

Comment annuler les modifications à l'aide du dépôt

repo status me montre beaucoup de changements indésirables.

Il serait dupliqué si j'entre dans chaque projet et utilise git reset --hard.

Existe-t-il un moyen de réinitialiser toutes les modifications à l'aide du repo, quelque chose comme repo reset --hard?

43
Johnny

Ceci est la commande que j'utilise pour ce genre de choses, très utile

repo forall -vc "git reset --hard"

Qu'est-ce que tout cela signifie ici?

les repo forall s'exécutera pour tous les dépôts.

-v est verbeux, il affichera donc la sortie de la commande

les -c "COMMAND TO EXECUTE" est la commande réelle que vous souhaitez

94
stdcall

S'il est nécessaire de rétablir le dossier de travail à l'état propre où vous n'avez pas de modifications locales et aucun fichier non suivi (c'est-à-dire où état du dépôt ne montre rien), j'ai trouvé ces deux approches utiles sur synchronisation du dépôt et fichiers supprimés/modifiés

repo forall -c 'git reset --hard ; git clean -fdx' 

ou

rm -rf * ; repo sync -l
// note that .repo is preserved after that

Notez que cela n'équivaut pas à l'initialisation d'un nouveau dépôt local et à la synchronisation (par exemple, la cachette est préservée)

Si vous n'êtes pas sûr de ce qui se passe, veuillez lire le fil complet synchronisation du repo et fichiers supprimés/modifiés

20
pmod

J'utilise la commande repo forall avec la syntaxe ci-dessous et cela m'aide à réinitialiser les fichiers de suivi.

repo forall -p -c 'git checkout -f foo'

foo doit être remplacé par un nom de branche légitime.

9
rans
#!/bin/bash
for gitdir in $(find . -name .git); do
    pushd $(dirname $gitdir)
    git reset --hard
    popd
done
4
h0tw1r3