Отменить git mv (переименовать)

Как правильно отменить переименование в git, например:

git mv file1 file2

8 ответов


Не нахальный ответ:

git mv file2 file1

Если вы не сделали никаких других изменений (которые вы хотите сохранить) с момента последнего фиксации, вы можете сделать

git reset --hard

Это зависит от того, чего вы хотите достичь. Если вы хотите, чтобы он выглядел так, как будто файл никогда не перемещался, вы можете сбросить (или перебазировать) обратно до перемещения. Если тебя не волнует история, просто верни ее назад.


в моем случае я переместил всю папку, а затем понял, что не должен был.

Мне очень понравился ответ @Dave Konopka, но у меня не было большого успеха с этим подходом (может быть, моя версия GIT (1.8.4)? Мои файлы все еще были удалены. У меня были другие изменения в стеке, которые я не хотел терять (к сожалению).

У меня был успех, делая это:

git reset moved_folder
git checkout original_folder

Если вы случайно переименовали большое количество файлов и хотите вернуться туда, откуда начали, удалите все переименованные файлы, которые отображаются как adds под git status звонок.

после удаления всех измененных файлов, вы можете запустить git checkout -- * чтобы вернуть исходные имена файлов локально.


git reset HEAD file2

сделал трюк для меня


git reset HEAD file2
git checkout -- file1
rm file2

первая команда unstages file2, но оставляет его копию вокруг. Вторая команда восстанавливает исходный файл, а третья удаляет новый файл.


трюк, который я использовал, состоял в том, чтобы сделать git stash, чтобы отменить все мои изменения (включая восстановление файлов mv'D), а затем удалить stash с помощью git stash drop.