我刚刚运行了以下命令:
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。
答案 0 :(得分:2)
git reset commit -- path
的意思是:将文件path
从commit
复制到索引中。
您无法撤消此操作,因为它会覆盖该路径的索引中的任何文件。
幸运的是,您很少需要 撤消此操作,因为索引中的副本也可能位于其他位置。如果是这样,只需将那个复制到索引中即可。通常,索引中任何文件的副本本身就是其他文件的副本:通过git checkout
提取的已提交文件的副本,或通过{添加的工作树文件的副本。 {1}}。
如果索引中的副本在其他任何地方都不存在,则说明您不走运。但这通常只发生在git add
或git add --patch
上。
更新:我想我打算做
git reset --patch
这意味着:从git checkout origin/dev -- package-lock.json
所标识的提交中复制文件package-lock.json
到索引中,然后将索引版本复制到工作树中。与{{ 1}},这会覆盖之前索引中的所有内容,并且该部分无法撤消。成功覆盖索引版本后,它还会将文件提取到工作树中,从而覆盖工作树中的所有内容。这也是无法撤消的-而且 less 可能是您拥有先前在工作树中拥有的副本。因此,与使用上述origin/dev
相比,使用这种git reset
要更加小心。
无论如何,如果您的意思是 ,那么您现在就可以执行此操作,覆盖您早先卡在索引中的内容,并覆盖工作树副本。