GitHub has the ability to merge+squash commits为PR。
我们按照来自dev
- >的公关代码的流程进行操作master
。
以前,我只是在合并' PR,但会产生一个新的提交,其中说:" Merge Pull Request #1 from foo/bar
"。 :( Boooo ......
所以我想我可能会用GH尝试新的Squash Commits
。这创建了一个新的提交,我以前的所有提交都被压缩了。好的,到目前为止一切顺利。
我然后回到我的dev
分支机构(在我的开发者机器上)..拉下upstream/master
(这是PR和壁球合并发生的地方))它现在添加了另一个提交到我的本地历史记录!它没有去#哦;哦......哇。你有点不合适..让我们同步"。它只是合并了。
所以Squash + Merge按钮压缩了4个提交并用1替换它...
我的localhost机器上的pull upstream/master
现在仍然有我的4次提交和PR提交的Squashed-commit和一个新的提交,即#34; Merge branch master .. blah ... noise ..spam
" commit :( :( :(
在合并壁球发生之后我是否应该做的特殊技巧/工作流程...以确保我的dev
分支正确同步' d?喜欢..每个人都会删除他们的localhost dev
分支,然后再将upstream/master
拉回到他们的localhost并进入(新创建的)dev
分支吗?
请记住:这里的目标是避免那些糟糕的" Merge Pull Request#2 .." merge bubble消息。
或者是人们暂时通过CLI执行此操作,直到GitHub了解如何执行此操作:(
答案 0 :(得分:4)
我认为问题在于您的工作流程:通常一旦合并了拉取请求(无论您使用哪种方法),您就可以完成该分支。如果您想进行进一步的更改,最好从当前的上游/主创建一个新的功能分支,稍后您可以打开另一个请求将其合并回来。
如果你真的想要坚持一个长寿命的分支用于所有开发(你称之为 dev ),那么你需要记住一些注意事项:
最后一点容易出错并会影响以前的代码审核,所以我个人会选择使用短期功能分支。
答案 1 :(得分:1)
如果您的dev
分支合并并被压扁,那么您不再需要它了。只需将其重置为upstream/master
。
如果有一些较新的更改,您可以调用git rebase -i upstream/master
代替并删除所有已合并的提交,然后重新设置其余提交。
答案 2 :(得分:0)
有一个更好的解决方案来合并和压缩你的提交,而无需额外提交“Merge Foo branch in Bar”。你应该总是喜欢变基,而不是合并然后压扁。因此,rebase将帮助您合并两个分支而无需任何额外的提交。你应该尝试重新定义分支而不是合并。以下是同一here的详细说明。