windows上的“git reset xxx”命令不执行与linux相同的操作?

windows上的“git reset xxx”命令不执行与linux相同的操作?,windows,git,pull,git-reset,Windows,Git,Pull,Git Reset,在HEAD版本中,我有一个错误,当我在master branch上运行时,拉取了另一个分支,因此一些新文件或目录已经从另一个分支合并到master branch中。我意识到这是一个很大的错误。所以我使用git reset xxx来恢复到xxx提交版本。然而,在完成命令后,我真的回到了xxx提交版本,那个些新文件或目录也在那个里。这个动作有什么问题?我是否接受了错误的命令?我只想回到一个干净的旧提交版本,而不通过错误的拉操作进行任何更改。谢谢 您应该使用: git reset --hard xxx

在HEAD版本中,我有一个错误,当我在master branch上运行时,拉取了另一个分支,因此一些新文件或目录已经从另一个分支合并到master branch中。我意识到这是一个很大的错误。所以我使用git reset xxx来恢复到xxx提交版本。然而,在完成命令后,我真的回到了xxx提交版本,那个些新文件或目录也在那个里。这个动作有什么问题?我是否接受了错误的命令?我只想回到一个干净的旧提交版本,而不通过错误的拉操作进行任何更改。谢谢

您应该使用:

git reset --hard xxxx
除索引外,这还将重置工作树


仅重置索引并不能消除对工作树所做的本地修改。

要返回到旧提交,请放弃所有更改:

git reset --hard commit-id
如果没有-硬开关,您将执行混合重置,这意味着更改仍将保留在您的工作集中。硬开关也可以去除这些

如果您还想删除任何未跟踪的文件,则:

git clean -f

是的,我也遇到过同样的问题,git reset-hard xxxx在Windows git终端中不工作

这是我在git terminal的回复:

$git reset-硬XXXX致命:参数“XXXX”不明确:未知 修订或路径不在工作树中。使用“-”分隔路径 从修订版来看,比如:'git[…]- [……]”


抱歉,可能是重复的,但它不能解决我的困惑。git clean-f-d工作正常,谢谢。此外,为什么我在windows上使用git reset xxx-hard,HEAD版本中被跟踪的新文件或目录在xxx版本中变为未跟踪状态?@xohozu,因为正确的语法是git reset-hard xxx,而不是git reset xxx-hard。@VonC git reset-hard xxx和git reset xxx-hard没有区别。一般来说,Git允许命令行选项在参数之前或之后显示。你看到了不同的行为吗?@jszakmeister不,你是对的。我把它和参数搞混了。@xohozu如果不这样做,重置时新的跟踪文件将被删除。如果出现新的未跟踪文件,可能是因为您正在重置对.gitignore文件的更改,我的意思是将xxx作为占位符,该占位符应替换为要重置的提交id。