141 votes

Comment supprimer toutes les modifications apportées à une branche ?

Je travaille dans une succursale (c'est à dire design ) et j'ai effectué un certain nombre de modifications, mais j'ai besoin de les supprimer toutes et de les réinitialiser pour qu'elles correspondent à la version du référentiel. Je pensais git checkout design le feraient, mais ça me dit juste que je suis déjà dans la branche. design et que j'ai 3 fichiers modifiés.

Comment puis-je supprimer ces modifications et obtenir la branche telle qu'elle se présente actuellement sur le serveur distant ?

0 votes

Voici un lien vers ma réponse à une question connexe : stackoverflow.com/questions/22620393/

0voto

Zach Folwick Points 695

Donc, il y a un certain nombre de réponses héritées ici. Je vais vous montrer comment I recommencer sur une branche en 2021 :

Lorsque vous avez fait des dizaines de commits et que des dizaines de fichiers ont été modifiés et que vous avez besoin de réinitialiser

git checkout master
git pull origin master
git checkout -b feat-foo-v2 # make a second version of feat-foo branch

maintenant vous avez une branche fraîche. Mais vous avez probablement encore fait un tas de travail qui est toujours bon, vous avez juste besoin de tirer en ceux dossiers. Lorsque vous êtes dans votre Racine répertoire git :

git checkout feat-foo -- path/to/file/to/be/used.java

Maintenant vous avez une copie du fichier individuel de l'ancienne branche. Faites-le encore quelques fois, et l'ancienne branche sera obsolète. Vous pouvez maintenant supprimer cette branche et la renommer feat-foo-v2 a feat-foo .

Disons que vous avez un fichier avec quelques changements, et que vous voulez seulement tirer dans algunos de ces changements. Je vous suggère de vous familiariser avec le --patch option sur git checkout :

git checkout -p feat-foo -- path/to/file.java

ouvrira une boîte de dialogue qui vous permettra de sélectionner les parties des modifications du fichier que vous souhaitez conserver.

Quand vous ne pouvez pas simplement créer une nouvelle branche Pour une raison ou une autre, vous êtes amoureux de votre branche et vous ne voulez ou ne pouvez pas l'abandonner. Vous savez que vous devez réinitialiser quelques fichiers, mais vous ne devriez pas avoir besoin de tout réinitialiser. Créer une toute nouvelle branche était en fait une étape inutile. Nous pouvons retirer le frais des fichiers du maître :

git checkout master -- path/to/file.java

et maintenant un fichier est remis à zéro ! Et si vous voulez juste réinitialiser partie d'un fichier, --patch devrait fonctionner de la même manière.

-1voto

user1914881 Points 142

Et si rm -rf <working dir> suivi par git clone <repo>.git

Après avoir lu toutes ces suggestions, c'est exactement ce que j'ai fini par faire et cela a parfaitement fonctionné !

0 votes

Réinitialiser l'ensemble du projet à partir de zéro juste pour annuler les changements dans un fichier n'est pas une solution. Veuillez utiliser git restore o git stash

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