如何在git中回滚到特定的提交?

有人能给我的最好答案是使用git恢复X次,直到我达到所需的提交。

假设我想要恢复到20次提交前的提交,我需要运行20次。

有更简单的方法吗?

我不能使用重置,因为这个存储库是公共的。


当前回答

回退到特定的提交:

git reset --hard commit_sha

回滚10次提交:

git reset --hard HEAD~10

如果你不想重写历史,你可以像下面的帖子一样使用“git revert”

如何将Git存储库恢复到以前的提交?

其他回答

第一步:获取提交列表:

git log

你会得到如下所示的列表:

[Comp:Folder User$ git log
commit 54b11d42e12dc6e9f070a8b5095a4492216d5320
Author: author <author@gmail.com>
Date:   Fri Jul 8 23:42:22 2016 +0300

This is last commit message

commit fd6cb176297acca4dbc69d15d6b7f78a2463482f
Author: author <author@gmail.com>
Date:   Fri Jun 24 20:20:24 2016 +0300

This is previous commit message

commit ab0de062136da650ffc27cfb57febac8efb84b8d
Author: author <author@gmail.com>
Date:   Thu Jun 23 00:41:55 2016 +0300

This is previous previous commit message
...

步骤2:复制所需的提交散列并粘贴以供检查:

git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f

这是所有。

你可以在GitHub/BitBucket/Gitlab的提交部分找到与每个提交相关的提交id。 这很简单,假设你的提交id是5889575,那么如果你想回到代码中的这一部分,那么你只需要输入

git checkout 5889575 .

这将带您到代码中的那个时间点。

在git中回滚一个特定的提交:

要返回一个旧的git提交:(the ac2ec…是提交名称)

git checkout ac2ece0219689ed86b08c93dfebb0d02c0f1d5b1

命名一个你想要HEAD分离指向的新分支:

git branch get_back_to_past

结帐到分支

git checkout get_back_to_past

现在该分支有了过去的提交项。例如,如果您愿意,您可以将其合并到主数据库。

有关git头部和回滚到旧版本的更多信息:点击这里

回退到特定的提交:

git reset --hard commit_sha

回滚10次提交:

git reset --hard HEAD~10

如果你不想重写历史,你可以像下面的帖子一样使用“git revert”

如何将Git存储库恢复到以前的提交?

git read-tree -um @ $commit_to_revert_to

我会做的。它是“git checkout”,但没有更新HEAD。

你可以达到同样的效果

git checkout $commit_to_revert_to
git reset --soft @{1}

如果您喜欢将方便的命令串在一起。

这将使你的工作树和索引处于所需的状态,你可以git提交完成。