git - 在 GitHub 中将 PR merge +压缩到 master 之后如何同步你的 git dev 分支?

标签 git github merge git-squash

So GitHub has the ability to merge+squash commits用于公关。

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

以前,我一直只是“merge ”PR,但这会生成一个新的提交,上面写着:“Merge Pull Request #1 from foo/bar”。 :( 呜...

所以我想我可以尝试使用 GH 的新 Squash Commits 东西。这创建了一个新的提交,我之前的所有提交都被压缩了。好的,到目前为止一切顺利。

然后回到我的dev分支(在我的开发机器上).. pull 下upstream/master(这是PR 和 squash-merge 发生了))现在它添加了另一个提交到我的本地历史!它没有去“哦..哇。你waaay越线..让同步起来”。它只是进行了 merge 。

所以 Squash+Merge 按钮压缩了 4 次提交并将其替换为 1 ... 在我的本地主机上 pull upstream/master 现在我的 4 次提交仍然存在,而且 PR 做了 Squashed-commit 和一个新的提交,即“Merge branch master .. blah ...噪音..垃圾邮件”提交:( :( :(

merge 压缩发生后,我应该做一个特殊的技巧/工作流程.. 以确保我的 dev 分支正确同步吗?就像 .. 每个人都只是删除他们的本地主机 dev 分支,然后再将 upstream/master pull 回到他们的本地主机并进入(新创建的)dev 分支?

记住:这里的目标是避免那些蹩脚的“Merge Pull Request #2..”merge bubble消息。

或者人们暂时只是通过 CLI 来执行此操作,直到 GitHub 学习如何执行此操作:(

最佳答案

我认为问题出在您的工作流程上:通常一旦您 merge 了一个 pull 请求(无论您使用哪种方法),您就完成了该分支。如果您想做进一步的更改,您最好从当前的 upstream/master 创建一个新的功能分支,稍后您可以打开另一个 pull 请求以将其 merge 回来。

如果您真的想为所有开发坚持一个长期存在的分支(您称为 dev 的分支),您必须牢记一些注意事项:

  • 如果您不是唯一在该分支工作的人,则必须避免任何类型的历史重写。没有 rebase ,没有压缩,没有重置,甚至没有修改提交。这基本上排除了使用 squash merge 的可能性。
  • 如果您确定您是唯一一个在该分支上工作的人,并且您使用 GitHub 的压缩选项像您一样 merge pull 请求,那么您必须将本地 dev 分支重置为latest upstream/master 在恢复你的工作之前。这也意味着稍后您将需要强制推送到上游以创建新的 pull 请求。

最后一点容易出错,会影响之前的代码审查,所以我个人会选择只使用短暂的特性分支。

关于git - 在 GitHub 中将 PR merge +压缩到 master 之后如何同步你的 git dev 分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559882/

相关文章:

c# - 我需要将 2 列的数据合并到另一列。然后将该添加列的所有行合并到另一个表中的一个单元格中

algorithm - Code Golf : combining multiple sorted lists into a single sorted list

Git:如何交换本地和远程的 2 个分支 (Github)

python - 在主分支 merge 时更改 Python 包版本

git - 发生冲突时如何强制 merge 成功?

git - 如何创建一个新的存储库,它是另一个存储库的克隆?

没有项目文件夹的 git clone

Git merge 报告文件在不存在时被删除

git - hexo:错误未找到部署程序:github

mysql - 是否有可能获得具有偏移量限制的总行数