git checkout不';t删除新添加的文件

git checkout不';t删除新添加的文件,git,version-control,version,Git,Version Control,Version,我想将我的回购还原为前一次提交的准确状态。然后进行新的提交(作为恢复的一部分)并推送到远程。我不想使用gitpush-f,所以我不想重写提交。我想使用一个新的提交和撤消多个更改 所以我运行了git checkout[HASH]-。 但我意识到这个命令并不能完全实现反转。在以后的提交中添加的文件实际上不会被删除 如何准确地在git中还原?如果您的本地git足够新(2.27+),则要使用的命令是git restore: git restore [HASH] 如果由于某种原因,您无法将本地git升

我想将我的回购还原为前一次提交的准确状态。然后进行新的提交(作为恢复的一部分)并推送到远程。我不想使用gitpush-f,所以我不想重写提交。我想使用一个新的提交和撤消多个更改

所以我运行了
git checkout[HASH]-。

但我意识到这个命令并不能完全实现反转。在以后的提交中添加的文件实际上不会被删除


如何准确地在git中还原?

如果您的本地git足够新(2.27+),则要使用的命令是
git restore

git restore [HASH]

如果由于某种原因,您无法将本地git升级到足够新的版本,
使用git读取树:

git read-tree [HASH]

它的工作原理与git reset--hard相同,但与重要的区别是,
git checkout
是工作目录安全的,因此它不会覆盖工作目录中的现有更改

如果要撤消/还原提交,可以使用将要还原的提交中的
commit散列
,执行以下操作:

git revert <commit hash>
git还原

但是您也可以清除您的,然后您可以执行
git checkout

要在旧git中获得
git restore
的效果,请使用
git read tree-u