我怎样才能用PR硬复位



我想将master重置为以前的提交,但我也希望我的团队批准PR。

到目前为止,我做到了:

  1. 从master创建本地分支
  2. 数字复位—硬d94kjf8
  3. 推送至远程

现在,当我进入github创建PR时,它会说";master对来自mybranch的所有提交都是最新的";所以做公关没有什么区别。

在使用我们的审查过程时,为了重置master,我应该采取什么不同的做法?

你不能

使用merge或PR无法执行git reset。相反,您有两个选项:

  1. 在本地某处重置master,然后强制推出到远程。(您可能需要特殊权限,即使只是临时权限,才能强制推送master。)这通常是不受欢迎的,这就是为什么它经常受到限制的原因
  2. 相反,您可以将revert命令用于您希望"提交"的每个提交(或合并提交);撤消";。还原会创建与还原的提交相反的新提交。然后,您可以将这些新提交PR到master

了解git至关重要的是,分支不是补丁或指令序列,它们是指向单个提交的指针。从那一个指针开始,历史的其余部分可以通过以下方式在时间上向后访问:;"父";指针。

命令git reset --hard d94kjf8移动当前分支的指针以提交d94kjf8。这不是一个可以记录在历史、审查或合并中的操作——它只是一个直接的指令,让git更改一个记录";分支X当前指向提交Y";。

要移动远程服务器上分支的指针,可以使用";"强制推动";,它告诉远程服务器";忘记你的指针指向什么,改为指向这个";。同样,这里没有审查过程:您发出命令,服务器服从(或根据服务器上配置的限制拒绝),然后就完成了。

移动共享分支的分支指针会对在该分支之上构建工作的每个人产生影响。有时,这绝对是正确的做法,但你和你的同事需要了解你在做什么,以及之后需要解决的其他问题。

具体来说,在您进行更改之前从master创建的任何分支都将具有您想要的提交作为其历史的一部分;跳过";。这些分支中的每一个都需要";rebased";,创建一个新的历史,就好像master在创建它们时已经提交d94kjf8一样。

最新更新