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


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

git mv file1 file2
8 104

8 ответов:

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

git mv file2 file1

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

git reset --hard

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

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

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

Я действительно имел успех, делая это:

git reset moved_folder
git checkout original_folder

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

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

git reset HEAD file2

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

git reset HEAD file2
git checkout -- file1
rm file2

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

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