152

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

git mv file1 file2
4

9 回答 9

249

不厚脸皮的回答:

git mv file2 file1

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

检查git mv的文档

于 2011-02-04T20:52:27.440 回答
47

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

git reset --hard
于 2013-02-27T22:25:41.527 回答
16
git reset HEAD file2

为我做了伎俩

于 2016-10-13T07:29:23.023 回答
9

就我而言,我移动了整个文件夹,然后意识到我不应该这样做。

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

我确实成功了:

git reset moved_folder
git checkout original_folder
于 2014-04-21T23:17:46.377 回答
8

这取决于你想要完成什么。如果您希望它看起来好像文件从未移动过,那么您可以重置(或变基)回到移动之前。如果您不关心历史,那么只需将其移回即可。

于 2011-02-04T21:07:25.340 回答
7

如果您不小心重命名了大量文件并想回到您开始的位置,请删除所有显示为adds正在git status通话中的重命名文件。

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

于 2012-03-22T20:47:23.283 回答
5
git reset HEAD file2
git checkout -- file1
rm file2

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

于 2018-02-01T19:40:05.363 回答
1

我使用的技巧是执行 git stash 来撤消我的所有更改(包括恢复 mv'd 文件),然后使用 git stash drop 删除存储。

于 2018-04-13T19:50:22.630 回答
0

不那么可怕的是进入 repo 的顶层并执行以下操作:

git 重置
git checkout 。

于 2020-07-23T03:58:31.430 回答