Annuler git mv (renommer)

139

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

git mv file1 file2
jrdioko
la source
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

CanSpice
la source
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
Klas Mellbourn
la source
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

zbig
la source
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
zedd45
la source
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.

William Pursell
la source
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.

Dave Konopka
la source
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.

Kamaraju Kusumanchi
la source
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.

sevencontinents
la source
0

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

git reset
git checkout.

w0mbat
la source