我无意中从我的存储库fork的主分支创建了一个拉取请求。
在尝试rebase它时,我注意到所有这些更改都被推送到了拉取请求中——因为您可以简单地通过向username/repo的主分支添加更多提交
- 在提交拉取请求后,您能更改其源分支吗?
我看到您可以编辑基础分支,但这显然不是我想要的。
据我所知,在创建拉取请求后,您不能更改源分支。相反,您必须创建一个新的分支。
供将来参考的最佳实践是,在进行任何提交之前创建一个新分支。特别是在贡献团队项目时,不应直接提交到主分支。
附注:
你可以通过推送到用户名/仓库的主分支来添加更多的提交
更正确地说,对PR目标分支的任何更改都会自动包含在PR中。
在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
假设你的分支“source-branch”错误地基于“release”,而不是“master”。但 github 目标分支是“master”。使用此命令,可以将更改移到 master 分支上:
git checkout source-pr
git rebase --onto master release