【发布时间】:2021-06-06 21:21:26
【问题描述】:
我发现 GitHub 中缺少的这个功能令人沮丧,所以我在这里记录我的解决方法以帮助下一个人。欢迎使用其他更好的解决方法。
这个问题不是与How to change the author of a PR in GitHub? 重复 ...因为这个问题不清楚是否是询问如何重写一些作者提交并将它们推送到 github,或者实际上更改最初创建整个 PR 的名称。而且,该问题的公认答案是对本地 .git/config 文件的简单修复,这显然无法解决我在这里谈论的 GitHub 问题。
在 GitHub PR 的顶部,您会看到如下内容:
username想将1提交从their_feature_branch合并到base_branch中
Example PR (chosen "at random" from GitHub, just to show the PR author line in the image below)。图片:
那个username:我们怎样才能改变它?示例用例:
- 开这个PR的队友刚离开公司,我们想征用(接手)为他们完成PR。
- 工作量的变化需要你从另一个队友那里接管一个部分完成的 PR。如何将 PR 更改为您的名字?
假设每个人都拥有对整个 repo 的完全推送访问权限,这意味着您无论如何都可以向/从彼此的分支推送/拉取。
【问题讨论】:
-
为什么不能只保留公开的 PR 并让新人推送到分支?你还没有提到为什么现有的 PR 必须由不同的人“拥有”。
-
@bk2204,请参阅我的回答中的第 1 条:“继续使用他们的公开 PR,在这种情况下,他们的名字,而不是你的名字,会附加到最终的、压缩和合并的提交中,如果你使用“Squash and merge”选项来完成 PR。”如果您继续使用该打开的 PR,将您的提交推送到该分支,然后在最后执行 GitHub“压缩合并”选项(通过单击该 GUI 按钮),打开 PR 的人,而不是您,将在合并到
base_branch(通常是master或main)的最终单个提交。在git log中找不到您完成所有工作的事实。 -
要清楚,你的名字出现在
their_feature_branch中的所有小提交上,但是一旦该功能分支被 GitHub “压缩合并”到base_branch你应该删除它,并且打开PR,而不是你,是 GitHub 附加到base_branch的 1 个压缩提交的名称。如果 A)这个人在几周或几个月前离开公司,现在以某种方式合并了一个 PR(实际上是你这样做的),并且 B)如果他们的名字出现在你的大部分工作中,这可能会令人困惑和不理想。也许他们用 10 行打开 PR,但你做了其他 500 行。你的名字应该在上面。 -
如果你使用 squash 合并,你实际上是在说你想破坏历史并且你根本不关心它。你本质上会失去两个人在那个分支上工作的事实,而且没有办法解决这个问题。在你的情况下,你想成为提交的一方,但是你忽略了你的同事所做的工作。如果您关心归因,请不要使用 squash 合并。
-
@bk2204,一些公司或 repo 所有者设置他们的 GitHub repos 以禁止除 squash 合并之外的所有类型的合并,因此选择不一定是单击合并按钮的那个。它可能由公司或组织设置,而不是用户设置。在 GitHub 上的任何 repo 上,您可以通过选中 repo --> Settings --> Options --> 下的相应复选框来独立允许或禁止“merge commits”、“squash merging”和“rebase merging”(向下滚动到“合并按钮”部分)--> 选择复选框。所以,对于那些没有这个选项的人,我的答案是我能想到的最好的答案。
标签: github version-control pull-request