GitHub - How to revert changes to previous state
我正在使用Github作为远程存储库。
我已经将5个提交推送到服务器,并希望在这些提交之前恢复到状态。
如果提交哈希是
1 | $ reset --hard 3425661dba2aadccdbab |
但这只会把我的工作负责人重新分配给那个部门,并要求我再做一次
您基本上有两个恢复更改的选项:
第一种选择可以通过使用
git-revert - Revert some existing commits
Given one or more existing commits, revert the changes that the related patches introduce, and record some new commits that record them.
号
一个例子是
第二种选择是实际删除提交。请注意,这会更改存储库中的历史记录。因此,任何已经做出改变的人可能都会非常惊讶,事情很快就会变得混乱。也就是说,你可以
1 2 | git reset --hard HEAD~5 git push --force |
第一个命令将清除当前工作副本中所有未提交的更改。并将本地存储库重置为当前head-5提交的状态。第二个命令将强制推送到默认的远程(即github)那里,任何偏离当前本地存储库的更改都将被覆盖。
再次提醒:如果您不知道自己在做什么,请不要使用此选项,因为如果操作不当,可能会导致您或他人的数据丢失。使用第一个选项,因为它将透明地删除更改,但不会造成历史重写的不良副作用。
做一个
你可以在你所要求的状态之后对所有的承诺执行
如果有其他人共享回购协议,这是一种干净的方式,但有点轻松。(不过,您可以自动化…?)
执行git签出,然后将其提交到所需的分支。这将使用旧代码进行新的提交(因此您将有6个提交)。
更好的是,您可以将单个文件签入当前头部:
埃多克斯1〔2〕
这将减少让其他人对你从他们脚下拉出众所周知的地毯而生气的可能性。
编辑:
这里有一个类似的问题:
签出旧提交并使其成为新提交