作者回复: 怎么可能? 先是狠狠地臭骂一通;然后找到是谁干的,比如毛毛;接着其他同事会把rebase前的commit恢复出来,比如commitA;要求毛毛在commitA基础上把自己的变更在此基础上恢复。 当然,现在的代码平台对集成分支都提供了保护机制,团队可以设置保护分支,以便禁止开发人员执行 push -f 的行为。 话说回来,团队成员还是得懂这个道理,否则,平台给了再好的机制可能还会有问题。
作者回复: 这种情况最适合用rebase了
作者回复: reflog 命令查看一下,还有的救
作者回复: git pull --rebase,或者分两步走:先把远端分支fetch到本地,再把本地的当前分支基于fetch下来的远端分支做 rebase 。
作者回复: 如果线性对你们团队很重要的话,办法肯定是有的。比如master为集成分支,且要求版本历史为线性,假设在GitHub平台上,首先为master分支设置Branch protection rule(不允许直接push),勾选“Require pull request reviews before merging。 其次,Merge Button选择“Allow squash merging”或者“Allow rebase merging”,不要选“Allow merge commits”。 建议动手验证一下。
作者回复: 很好的问题。你们的组织形式是怎样的?有哪些困难? 不妨把情况说具体一些。
作者回复: 已更新,加油