由于一些糟糕的选择,我的本地Git存储库目前比原始库提前了五次提交,并且状态不佳。我想摆脱所有这些承诺,重新开始。

很明显,删除我的工作目录并重新克隆就可以了,但再次从GitHub下载所有内容似乎太过了,而且没有很好地利用我的时间。

也许git-restore是我需要的,但我不想在源代码之前提交10次(甚至6次),即使它确实将代码本身恢复到正确的状态。我只想假装最后半小时从未发生过。

有一个简单的命令可以做到这一点吗?这似乎是一个明显的用例,但我找不到任何例子。


请注意,这个问题专门针对提交,而不是:

未跟踪的文件未分级更改已分段但未提交的更改


当前回答

删除未跟踪的文件(未提交的本地更改)

git clean -df

永久删除所有本地提交并获取最新的远程提交

git reset --hard origin/<branch_name>

其他回答

删除最近的提交,而不破坏您所做的工作:

git reset—软HEAD~1

删除最近的提交并删除更改:

git重置--硬HEAD~1

gitreset-hard@{u}*删除当前分支上的所有本地更改,包括提交。我很惊讶还没有人发布这篇文章,考虑到你不必查找要恢复到的内容或使用分支。

*也就是说,在@{upstream}-通常是origin/<branchname>处重置为当前分支,但并不总是这样

Try:

git reset --hard <the sha1 hash>

将你的头重置到你想去的任何地方。使用gitk查看你想去哪一个提交。你也可以在gitk内重置。

尝试分支时:

git reset --hard origin/<branch_name>

因此,使用“gitlog”或“gitstatus”验证反转(状态,无本地提交)。

如果您的超额提交仅对您可见,您可以git reset--硬原点/<branch_name>移回原始位置。这将将存储库的状态重置为上一次提交,并放弃所有本地更改。

执行git还原会生成新的提交以删除旧的提交,从而使每个人的历史保持正常。