撤消git reset file命令

时间:2018-10-12 20:11:44

标签: git git-reset

我刚刚运行了以下命令:

 git reset origin/dev -- package-lock.json 

但是我想撤消它,我想回到:

 git reset HEAD -- package-lock.json 

但是我认为回到HEAD可能为时已晚...我如何撤消原始命令?

也许:

 git reset HEAD^ -- package-lock.json 

更新:我想我打算做git checkout origin/dev -- package-lock.json,而不是git reset。

1 个答案:

答案 0 :(得分:2)

git reset commit -- path的意思是:将文件pathcommit复制到索引中。

您无法撤消此操作,因为它会覆盖该路径的索引中的任何文件。

幸运的是,您很少需要 撤消此操作,因为索引中的副本也可能位于其他位置。如果是这样,只需将那个复制到索引中即可。通常,索引中任何文件的副本本身就是其他文件的副本:通过git checkout提取的已提交文件的副本,或通过{添加的工作树文件的副本。 {1}}。

如果索引中的副本在其他任何地方都不存在,则说明您不走运。但这通常只发生在git addgit add --patch上。

  

更新:我想我打算做git reset --patch

这意味着:git checkout origin/dev -- package-lock.json所标识的提交中复制文件package-lock.json到索引中,然后将索引版本复制到工作树中。与{{ 1}},这会覆盖之前索引中的所有内容,并且该部分无法撤消。成功覆盖索引版本后,它还会将文件提取到工作树中,从而覆盖工作树中的所有内容。这也是无法撤消的-而且 less 可能是您拥有先前在工作树中拥有的副本。因此,与使用上述origin/dev相比,使用这种git reset要更加小心。

无论如何,如果您的意思是 ,那么您现在就可以执行此操作,覆盖您早先卡在索引中的内容,并覆盖工作树副本。