【发布时间】:2017-02-02 17:30:28
【问题描述】:
我的同事经常会对打开的拉取请求进行一些更改,将他们的本地分支重新定位到基础分支 - 通常也会将他们的更改压缩到以前的提交中 - 并强制推送。
如何查看旧版 PR 和新版 PR 之间的变化?
我想我可以在首次提出 PR 时执行 git pull 和 git checkout $BRANCH_NAME,然后在 PR 更新后执行 git fetch 和 git diff $BRANCH_NAME..origin/$BRANCH_NAME - 但这也会显示已引入到base 分支(通常是 master)并通过 rebase 引入 PR。是否有可能消除这些噪音,只显示 PR 本身的变化?
【问题讨论】:
-
实际上,如果我们都使用 TopGit,并且也推送我们的 TopGit 分支,我们就不会有这个问题,因为我们可以看看彼此的 TopGit 分支,看看发生了什么变化——而且也可以解决变基问题,因为 TopGit 会合并而不是变基,然后在发布 PR 时导出(这就像一个不会改变历史的压缩变基)。不过,这需要我的同事改变他们的 git 工作流程。
-
虽然,再想一想,这并不总能解决问题,因为任何有争议的合并决议都可能隐藏在合并提交中。
-
旁注:GitHub 现在支持“rebase on merge”合并策略,因此您实际上不再需要 rebase 拉取请求
-
重新基于合并可能会破坏构建。当然,非平凡的合并也可以。我建议在合并之前重新定位和重建。
-
公平起见。我不确定你问的是可能的。变基会重写 Git 历史记录,因此除非您在本地拥有分支,否则您将无法将其与变基版本进行比较
标签: git github pull-request git-diff