协慌网

登录 贡献 社区

回滚到公共回购中的旧 Git 提交

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

有人可以给我的最佳答案是使用git revert X 次,直到达到所需的提交。

假设我想恢复为 20 提交的旧提交,我必须运行 20 次。

有没有更简单的方法可以做到这一点?

我不能使用 reset,因为此存储库是公共的。

答案

尝试这个:

git checkout [revision] .

其中[revision]是提交哈希(例如: 12345678901234567890123456789012345678ab )。

别忘了.最后,非常重要。这会将更改应用于整个树。您应该在 git 项目根目录中执行此命令。如果您在任何子目录中,那么此命令仅更改当前目录中的文件。然后提交,你应该很好。

您可以通过以下方式撤消该操作

git reset --hard

它将删除工作目录和登台区域中的所有修改。

要回滚到特定提交:

git reset --hard commit_sha

要回滚 10 次提交:

git reset --hard HEAD~10

如果您不想重写历史记录,可以使用以下帖子中的 “git revert”

如何将 Git 存储库还原到先前的提交?

好吧,我想问题是,“回滚” 是什么意思?如果由于公开而不能reset并且想要保持提交历史记录完整,那是否意味着您只希望工作副本反映特定的提交?使用git checkout和提交哈希。

编辑:正如评论中指出的那样,使用git checkout而不指定分支将使您处于 “无分支” 状态。使用git checkout <commit> -b <branchname>签入分支,或git checkout <commit> .签入当前分支。