首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GitHub -如何将更改恢复到以前的状态

GitHub -如何将更改恢复到以前的状态
EN

Stack Overflow用户
提问于 2011-08-07 16:54:24
回答 4查看 70.6K关注 0票数 43

我使用GitHub作为我的远程存储库。

我已经将5个提交推送到服务器,并希望恢复到这些提交之前的状态。

如果提交散列为3425661dba2aadccdbab,如何将整个本地/远程恢复为该提交?我试过了

代码语言:javascript
复制
$ reset --hard 3425661dba2aadccdbab

但这只是将我的工作头重置到该分支,并要求我再次执行git pull。我试着结账,但这导致我在一个“分离的头”分支。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-07 17:05:24

您基本上有两个选项来恢复更改:

  1. 创建一个应用反向更改的新提交。这是首选选项,因为它不会更改公共提交的历史记录并强制推送它们。

第一个选项可以通过使用git revert来实现

git-revert -恢复一些现有提交

给定一个或多个现有的提交,恢复相关补丁引入的更改,并记录一些记录它们的新提交。

git revert -n HEAD~5..HEAD就是一个例子。这个命令创建了5个新的提交,每个提交都撤消了当前检出分支的最后5个提交中的一个。

第二个选项是实际删除提交。请注意,这会更改存储库中的历史记录。因此,任何已经取消更改的人可能会感到相当惊讶,事情可能很快就会变得混乱。也就是说,您可以这样做

代码语言:javascript
复制
git reset --hard HEAD~5
git push --force

第一个命令将擦除当前工作副本中任何未提交的更改。并将本地存储库重置为当前HEAD -5提交的状态。第二个命令将强制推送到默认远程(即GitHub),任何与当前本地存储库不同的更改都将被覆盖。

再次警告:如果您不知道自己在做什么,请不要使用此选项,因为如果操作不当,它可能会导致您或其他人的数据丢失。使用第一个选项,因为它将透明地删除更改,但不会产生历史重写的严重副作用。

票数 66
EN

Stack Overflow用户

发布于 2011-08-07 17:05:41

您可以对在您的required状态之后进行的所有提交执行git revert <commit>。(按相反顺序排列,以避免任何冲突。)

如果有其他人共享回购,这是一种干净的方式,但有点费力。(您可以自动执行...?)

票数 4
EN

Stack Overflow用户

发布于 2011-08-07 16:59:29

做一个git push -f。如果有其他人使用相同的repo,这不是一个好主意。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6971717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档