Answers:
您可以使用git revert <commit>…所有n次提交,然后像往常一样进行推送,以保持历史记录不变。
或者,您可以使用来“回滚” git reset --hard HEAD~n。如果您要推送公共或共享存储库,则可能会基于原始分支来分散和破坏其他工作。Git会阻止您这样做,但是您可以git push -f用来强制进行更新。
revert将导致您的功能分支被视为“已”合并。这是因为这些部门都是实际被合并。但是更改已还原。解决方案:选择或还原还原提交。
reset --hard还会导致要素分支被视为已合并?我的假设是不会(在哪里revert)。
幸运的是,我可以使用Pat Notz的解决方案完全消除了不需要的提交。但是,最初我得到了错误
error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*
但是添加force(-f)选项会覆盖此错误
git push -f origin 52e36b294e:master
如果您可以直接访问远程仓库,则可以始终使用:
git reset --soft <sha1>
这是可行的,因为没有尝试修改不存在的工作目录。有关更多详细信息,请参见原始答案:
git reset --hard [sha1]其中sha1是提交哈希标识符。