Git:重置为旧提交

时间:2016-09-07 11:26:23

标签: git revert

我知道这个问题已被回答了几次,但到目前为止,我尝试的每个发布的解决方案对我都不起作用:(

情况是:我们想要回到主分支中的工作提交。不幸的是,自那时以来,多次更改(包括与其他分支的合并)已被推送到掌握。

所以我需要做的是再次将master分支转到最后一个工作提交 - 或者检查最后一个工作提交并“覆盖”master上的最后一次提交 - 在服务器(github)repo上。我真的不在乎最后一次工作提交的更改是否会丢失,但如果它们保持不变则不会受到伤害。

重要的是,没有触及其他分支!!!

git revert没有以多种方式完成工作......

2 个答案:

答案 0 :(得分:2)

我们可以尝试用一个新分支替换master分支,稍微有点腥:)

从您知道的工作提交中创建一个新分支

  • 如果提交是从头部使用git branch master-temp HEAD~n开始的第n级。用水平替换n。

    • 如果您提交哈希使用git branch master-temp <sha1>
  • 将当前主分支重命名为新名称master-oldmaster-deprecated
  • 将新分支master-temp重命名为master

这将保留更改,创建工作代码的分支。所有团队成员都可以继续工作而无需任何更改。

如果旧分支需要任何其他提交,请选择提交到新主分支。

正如@Flows添加,

  • 如果需要推送到主人,需要使用git push -force <branch>

必须使用更改来更新本地主分支,并按照设计进行开发循环。

答案 1 :(得分:1)

我建议您找出您希望切换到的最后一次提交的提交ID:

git log --stat

然后,如果您在主分支中执行git checkout到该提交ID

git checkout <commit id>

这可能使你处于一个超然的状态,现在确保你回到你想要的地方并做最后的提交并推动掌握。希望它有所帮助。