在GitHub中合并+压缩PR至主后,如何同步git dev分支?

Pur*_*ome 3 git merge github git-squash

因此,GitHub 能够合并 PR的+ squash提交

我们遵循从dev-> 中PR代码的过程master

以前,我只是在“合并” PR,但是会生成一个新提交,内容为:“ Merge Pull Request #1 from foo/bar”。:(嘘...

所以我想我可以Squash Commits和GH一起尝试新事物。这创建了一个新提交,而我之前的所有提交均被压缩。好的,到目前为止很好。

回到我的dev分支(我的开发机器上)..拉下来upstream/master(这是在PR和壁球合并发生的事情)),现在又增加了承诺,我当地的历史!它并没有显示“哦..哇。你太过分了..让我们同步”。它只是合并了。

因此,Squash + Merge按钮压缩了4次提交,并将其替换为1 ... ... upstream/master在我的本地主机上,现在我的本地主机上还有4个提交,而Squashed-commit PR做了一个新的提交,即“ Merge branch master .. blah ... noise ..spam” commit :(: (:(

在发生壁球合并之后,我应该做些特殊的技巧/工作流程以确保我的dev分支正确同步吗?就像..每个人devupstream/master撤回其本地主机并进入(新创建的)dev分支之前,是否只是删除其本地主机分支?

请记住:这里的目标是避免那些笨拙的“合并请求2” 合并气泡消息。

还是人们暂时只是通过CLI进行此操作,直到GitHub学习如何进行此操作:(

Die*_*o V 5

我认为问题出在您的工作流程上:通常,一旦合并合并请求(无论使用哪种方法),就都可以使用该分支。如果要进行进一步的更改,最好从当前的上游/主节点创建一个新的功能分支,然后再打开另一个拉取请求以将其合并回去。

如果您真的想为所有开发坚持一个长期存在的分支(您称为dev),则需要牢记一些警告:

  • 如果您不是该分支上唯一的工作人员,则必须避免任何类型的历史记录重写。没有重新设置,没有挤压,没有重置,甚至没有修改提交。这基本上排除了使用壁球合并。
  • 如果确定自己是该分支上唯一的分支,并且使用GitHub的squash选项像您那样合并合并请求,那么您必须在将本地dev分支重置为最新的上游/主服务器之前,才能在该分支继续工作。这也意味着以后您将需要强制向上游推送以创建新的拉取请求。

最后一点很容易出错,并且会影响以前的代码审查,因此我个人选择只使用短暂的功能分支。