当前位置:  开发笔记 > 开发工具 > 正文

GitHub - 如何将更改还原到以前的状态

如何解决《GitHub-如何将更改还原到以前的状态》经验,为你挑选了1个好方法。

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

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

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

$ reset --hard 3425661dba2aadccdbab

但那只是把我的工作头重新安置到那个分支,并要求我再做git pull一次.我试过结帐,但这导致我降落在"独立的头"分支.



1> Holger Just..:

您基本上有两个选项可以还原更改:

    创建一个应用反向更改的新提交.这是首选选项,因为它不会更改公用存储库的历史记录

    删除提交并强制推送它们.

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

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

给定一个或多个现有提交,还原相关修补程序引入的更改,并记录一些记录它们的新提交.

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

第二种选择是实际删除提交.请注意,这会更改存储库中的历史记录.因此,任何已经做出改变的人都可能会感到非常惊讶,事情可能会很快变得混乱.那就是说,你可以做到

git reset --hard HEAD~5
git push --force

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

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


@RutgerHofste它描述了`HEAD`(即当前结账提交)和`HEAD`之前的5次提交之间的提交范围.因此,`git revert`将为最后5次提交创建恢复提交.类似地,`git reset`命令将移动当前分支5提交回来.有关如何为命令指定相对提交的详细说明,请参阅[此博客文章](http://www.paulboxley.com/blog/2011/06/git-caret-and-tilde).
推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有