在Github上更改PR的源分支

43

我无意中从我的存储库fork的主分支创建了一个拉取请求。

在尝试rebase它时,我注意到所有这些更改都被推送到了拉取请求中——因为您可以简单地通过向username/repo的主分支添加更多提交

  • 在提交拉取请求后,您能更改其源分支吗?

我看到您可以编辑基础分支,但这显然不是我想要的。


更准确地说,任何对PR目标分支的更改都会自动包含在PR中。 - Code-Apprentice
3个回答

35

据我所知,在创建拉取请求后,您不能更改源分支。相反,您必须创建一个新的分支。

供将来参考的最佳实践是,在进行任何提交之前创建一个新分支。特别是在贡献团队项目时,不应直接提交到主分支。

附注:

你可以通过推送到用户名/仓库的主分支来添加更多的提交

更正确地说,对PR目标分支的任何更改都会自动包含在PR中。


2
您可以在创建拉取请求之后更改基本分支。您只需使用编辑按钮即可。 - TheGeorgeous
1
据我所见,您只能更改目标分支而不能更改源分支。 - webduvet
2
基础分支 = 目标分支(这总是有点令人困惑),这是您可以更改的分支。不幸的是,源分支(!= 基础分支)不能更改。 - Asara
@Asara,我不明白你的评论。你是在建议我编辑我的答案吗?你建议做哪些更改? - Code-Apprentice
@Code-Apprentice 这只是一个澄清,因为这里的评论使用了不同的术语,有时会误导非高级用户。 - Asara
@Asara 是的,我的术语似乎完全不准确和误导。我需要修正这个答案,使其更符合 GitHub 的术语。评论需要进行清理,以消除任何额外的混淆。 - Code-Apprentice

7

在Github中,由于您只能更改目标分支而不能更改源分支,因此您需要“原地”更新源分支。

本答案提供了三种方法。

在Github中,您会看到:

github用户想要从“源分支”合并N个提交到master分支

由于您将更改“源分支”的历史记录,请确定没有其他人正在使用该分支!


重写源分支的历史记录

如果您是唯一在此分支上开发的人,则可以使用 git rebase -i ,然后使用 git push --force-with-lease

这样您就可以重写该分支的历史记录。

关于重写git历史记录的文档:https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History


将临时分支重命名为源分支

如果您希望从头开始,请使用此方法。

git checkout master

# create a temporary branch
git checkout -b tmp-branch

... now modify the tmp-branch the way you want to. Commit, but don't push.

# rename tmp-branch to "source-branch"
git branch -f -m source-branch

# Be sure nobody is using "source-branch", since the history gets rewritten.
git push --force-with-lease

git rebase --onto

假设你的分支“source-branch”错误地基于“release”,而不是“master”。但 github 目标分支是“master”。使用此命令,可以将更改移到 master 分支上:

git checkout source-pr
git rebase --onto master release

2
如果源分支设置为主分支,那么这并不能真正解决任何问题。 - Joel Croteau

-23

Screenshot 1Screenshot2

是的,我们可以在创建拉取请求后编辑基础分支/源代码,在右侧您会看到编辑选项,请参见附带的第1张截图,单击该选项,然后您将能够更改基础/源代码分支。有关更多信息,请参见此评论所附的第2张截图。


1
正如您在截图中所看到的,您只能更改基础分支。 - Tommaso Ercole
2
“source” 分支指的是你想要合并到基础分支(或“目标”或“目的地”分支)的分支,而 GitHub 不允许你更改它。 - kim
8
我没有恶意,但我建议删除这个回答。 - Phani Rithvij
有趣的是,即使这不是这个问题的答案,它却正是我在寻找的。 - Przemek D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接