我怎样才能回滚一个github库到一个特定的提交?

我的github现在有100个提交。 我需要回滚仓库提交80,并删除所有后续的。

为什么? 这个回购是为了从其他用户合并。 由于过度的编辑,一堆合并进入我的提交。 这是由于我的远程分支的标签错误,其中3个开发者被标记为彼此。 我需要重置到这一点,然后向前拉。

我想重新绑定,如下例所示: 我如何删除GitHub上的提交?

但是,git要我做很多冲突pipe理。 有一个更简单的方法吗?

git reset --hard <old-commit-id> git push -f <remote-name> <branch-name> 

注意:正如下面的评论中所写, 在协作环境中使用这个方法是很危险的:你正在重写历史

其他方式:

签出要恢复的分支,然后将本地工作副本重新设置为您希望成为远程服务器上最新的一个提交(在它将会再见之后的所有内容)。 为此,在SourceTree中,我右键单击并select“将BRANCHNAME重置为此提交”。

然后导航到您的存储库的本地目录并运行以下命令:

git -c diff.mnemonicprefix = false -c core.quotepath = false push -v -f –tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME

这将清除当前仓库中所有提交之后的所有提交,但仅限于该分支。

要撤消最近的提交,我这样做:

第一:

 git log 

得到最新的SHA ID撤消。

 git revert SHA 

这将创build一个与您的提交完全相反的新提交。 然后你可以推动这个新的提交,让你的应用程序到以前的状态,你的git历史将相应地显示这些变化。

这对于你刚才所做的事情的即时重做是很好的,我发现对于我来说更是如此。

正如Mike所说,你也可以这样做:

 git revert HEAD