撤消git mv(重命名)

jrd*_*oko 126 git rename undo mv

在git中撤消重命名的正确方法是什么,例如:

git mv file1 file2
Run Code Online (Sandbox Code Playgroud)

Can*_*ice 211

非厚脸皮的回答:

git mv file2 file1
Run Code Online (Sandbox Code Playgroud)

  • 似乎很少有东西像这样直观:) (9认同)
  • 假设file1和file2都在当前目录(.)中,那么为什么`git checkout .`不起作用,即使使用`-f`选项? (4认同)

Kla*_*urn 37

如果自上次提交后您没有进行任何其他更改(您希望保留),则可以执行此操作

git reset --hard
Run Code Online (Sandbox Code Playgroud)

  • 我不想养成使用`git reset --hard`的习惯.向后移动似乎对我来说是一个更安全的选择. (5认同)
  • 为我工作.我想撤消1)尚未提交的"git mv",2)我没有其他的chages (4认同)

zbi*_*big 9

git reset HEAD file2
Run Code Online (Sandbox Code Playgroud)

为我做了诀窍

  • 我对这个答案的唯一问题是它在磁盘上留下了 file2 的副本。 (2认同)

Wil*_*ell 8

这取决于你想要完成什么.如果您希望它看起来好像文件从未被移动过,那么您可以在移动之前重置(或重新绑定).如果你不关心历史,那就把它移回去吧.

  • 只要你没有推动你的提交,或者有人没有撤离你,第一个工作正常. (4认同)

zed*_*d45 8

在我的情况下,我移动了整个文件夹,然后意识到我不应该.

我真的很喜欢@Dave Konopka的答案,但是我没有用这种方法取得太大成功(也许是我的GIT版本(1.8.4)?我的文件仍显示为已删除.我在堆栈上有其他更改,我不想要失败(不幸的是).

我确实做到了这一点:

git reset moved_folder
git checkout original_folder
Run Code Online (Sandbox Code Playgroud)


Dav*_*pka 7

如果您不小心重命名了大量文件并希望返回到您开始的位置,请删除所有重命名的文件,这些文件显示addsgit status通话中.

删除所有已更改的文件后,可以运行git checkout -- *以在本地恢复原始文件名.


Kam*_*chi 5

git reset HEAD file2
git checkout -- file1
rm file2
Run Code Online (Sandbox Code Playgroud)

第一个命令取消暂存 file2 但留下它的副本。第二个命令恢复原始文件,第三个命令删除新文件。