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

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

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

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


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

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


当前回答

要查看/获取提交的SHA-1 id,您也需要返回

gitk --all

回滚到该提交

git reset --hard sha1_id

!笔记在提交之后进行的所有提交都将被删除(以及对项目的所有修改)。因此,首先最好将项目克隆到另一个分支或复制到另一目录。

其他回答

我有一种情况,我想删除一个未被推送的提交,但该提交在另一个提交之前。为此,我使用了以下命令

git rebase-i HEAD~2->它将对最后两次提交进行重新基化

我使用“drop”作为我想要删除的提交签名。

Try:

git reset --hard <the sha1 hash>

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

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

git clean -df

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

git reset --hard origin/<branch_name>
$ git fetch origin
$ git reset --hard origin/master

这将下载最新版本的远程分支,并用它覆盖本地分支,从而有效地丢弃所有本地提交。如有必要,用适当的远程分支名称替换原始/主分支。

使用任意次数,恢复到上次提交,而不删除最近创建的任何文件。

git reset --soft HEAD~1

然后使用

git reset HEAD <name-of-file/files*>

拆下或解开。