我知道这个问题已被回答了几次,但到目前为止,我尝试的每个发布的解决方案对我都不起作用:(
情况是:我们想要回到主分支中的工作提交。不幸的是,自那时以来,多次更改(包括与其他分支的合并)已被推送到掌握。
所以我需要做的是再次将master分支转到最后一个工作提交 - 或者检查最后一个工作提交并“覆盖”master上的最后一次提交 - 在服务器(github)repo上。我真的不在乎最后一次工作提交的更改是否会丢失,但如果它们保持不变则不会受到伤害。
重要的是,没有触及其他分支!!!
git revert没有以多种方式完成工作......
答案 0 :(得分:2)
我们可以尝试用一个新分支替换master分支,稍微有点腥:)
从您知道的工作提交中创建一个新分支
如果提交是从头部使用git branch master-temp HEAD~n
开始的第n级。用水平替换n。
git branch master-temp <sha1>
master-old
或master-deprecated
master-temp
重命名为master
这将保留更改,创建工作代码的分支。所有团队成员都可以继续工作而无需任何更改。
如果旧分支需要任何其他提交,请选择提交到新主分支。
正如@Flows添加,
git push -force <branch>
。必须使用更改来更新本地主分支,并按照设计进行开发循环。
答案 1 :(得分:1)
我建议您找出您希望切换到的最后一次提交的提交ID:
git log --stat
然后,如果您在主分支中执行git checkout到该提交ID
git checkout <commit id>
这可能使你处于一个超然的状态,现在确保你回到你想要的地方并做最后的提交并推动掌握。希望它有所帮助。