Annuler git mv (renommer)


139

Quelle est la bonne façon d'annuler un changement de nom dans git, comme:

git mv file1 file2

21
Réponse effrontée:git mv file2 file1
CanSpice

@CanSpice: C'est la bonne réponse; rien d'insolent à ce sujet.
CB Bailey le

1
@Charles: Eh bien, je l'ai fourni comme une bonne réponse non effrontée. :-)
CanSpice

git mv fichier2 fichier1 Vous vous attendiez à autre chose?
Lakshman Prasad le

Réponses:


230

Réponse non effrontée:

git mv file2 file1

Met à jour automatiquement l'index des anciens et des nouveaux chemins.

Consultez la documentation de git mv


4
supposons que file1 et file2 soient tous les deux dans le répertoire courant (.), alors pourquoi git checkout .ne fonctionne pas, même avec l' -foption?
ryenus

9
Il semble rare que les choses soient aussi intuitives que ça :)
ragerdl

@ryenus Vous devez utiliser git checkout -- ..
Joseph238

Lol. C'est marrant.
Dmitriy Dokshin

N'a pas fonctionné pour moi en donnant l'erreur:, fatal: source directory is empty,seulement git reset --hardfait le travail.
mac13k

43

Si vous n'avez effectué aucune autre modification (que vous souhaitez conserver) depuis le dernier commit, vous pouvez faire

git reset --hard

6
Je ne voudrais pas prendre l'habitude d'utiliser git reset --hard. Le simple fait de le déplacer vers l'arrière me semble une option plus sûre.
osa

4
A travaillé pour moi. Je voulais annuler un "git mv" qui 1) n'avait pas encore été commis, et 2) je n'avais pas d'autres chages
Ed of the Mountain

Si vous souhaitez conserver d'autres modifications, cela les détruira toutes.
user151841

13
git reset HEAD file2

fait l'affaire pour moi


1
Le seul problème que j'ai eu avec cette réponse est qu'elle a laissé des copies pour file2 sur le disque.
user52472

9

Dans mon cas, j'ai déplacé un dossier entier, puis j'ai réalisé que je n'aurais pas dû.

J'ai beaucoup aimé la réponse de @Dave Konopka, mais je n'ai pas eu beaucoup de succès avec cette approche (peut-être ma version de GIT (1.8.4)? Mes fichiers étaient toujours supprimés. J'avais d'autres modifications sur la pile que je ne voulais pas perdre (malheureusement).

J'ai réussi à faire ceci:

git reset moved_folder
git checkout original_folder

8

Cela dépend de ce que vous voulez accomplir. Si vous voulez qu'il apparaisse comme si le fichier n'avait jamais été déplacé, vous pouvez réinitialiser (ou rebaser) avant le déplacement. Si vous ne vous souciez pas de l'historique, alors déplacez-le simplement.


4
Le premier fonctionne bien tant que vous n'avez pas poussé votre commit ou que quelqu'un ne vous a pas retiré.
CanSpice le

7

Si vous avez accidentellement renommé un grand nombre de fichiers et que vous souhaitez revenir à votre point de départ, supprimez tous les fichiers renommés qui apparaissent addssous un git statusappel.

Une fois que vous avez supprimé tous les fichiers modifiés, vous pouvez exécuter git checkout -- *pour récupérer les noms de fichiers d'origine localement.


4
git reset HEAD file2
git checkout -- file1
rm file2

La première commande désactive le fichier2 mais en laisse une copie. La deuxième commande restaure le fichier d'origine et la troisième supprime le nouveau fichier.


1

L'astuce que j'ai utilisée était de faire un git stash pour annuler toutes mes modifications (ce qui inclut la restauration des fichiers mv'd), puis de supprimer le stash avec git stash drop.


0

Moins effrayant est d'aller au plus haut niveau du repo et de faire:

git reset
git checkout.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.