撤消 git mv (重命名)

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

git mv file1 file2
74615 次浏览

不厚脸皮的回答:

git mv file2 file1

自动更新新旧路径的索引。

检查 去你的的文档

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

如果您意外地重命名了大量文件,并且希望返回到开始的位置,那么删除在 git status调用下显示为 adds的所有重命名文件。

删除所有更改过的文件后,可以运行 git checkout -- *以在本地返回原始文件名。

如果自上次提交以来没有进行任何其他更改(您希望保留的更改) ,则可以这样做

git reset --hard

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

我真的很喜欢@Dave Konopka 的回答,但是我在这个方法上并没有取得很大的成功(也许是我的 GIT 版本(1.8.4) ?我的文件还是被删除了。我在堆栈上还有其他更改,我不想失去它们(不幸的是)。

我在这方面确实取得了成功:

git reset moved_folder
git checkout original_folder
git reset HEAD file2

帮了我大忙

git reset HEAD file2
git checkout -- file1
rm file2

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

我使用的技巧是使用 git 隐藏来撤销所有更改(包括恢复 mv’d 文件) ,然后使用 git 隐藏删除隐藏。

不那么可怕的做法是,到回购协议的最高层去做:

基特复位
Git 退房。

我喜欢@Kamaraju Kusumanchi 的回答。但是,我无法正确签出 file1,因为它在那个时候被暂存以便删除。所以一个更好的答案可能是

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

我实际上是按照卡玛拉朱的建议分两步重置的。因此,重置可能需要分两个步骤来完成。简单地说,只重置 file2就会让 file1暂时被删除。因此,在使用 checkout 恢复 file1之前,需要取消重命名和删除。