在Github上更改PR的源分支

时间:2017-02-22 02:22:30

标签: git github

我意外地从我的回购分支的主分支创建了一个拉取请求。

在试图改变它时,我注意到所有这些变化都被推入了拉取请求中 - 因为你可以简单地Add more commits by pushing to the master branch on username/repo

  • 在提交拉取请求后,您是否可以更改拉取请求的源分支?

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

4 个答案:

答案 0 :(得分:6)

AFAIK,您无法在创建Pull请求后更改源分支。你必须改为创建一个新的。

为了将来参考,建立的最佳实践是在进行任何提交之前创建一个新分支。你不应该直接承诺掌握,特别是在为团队项目做贡献时。

旁注:

  

你可以通过推送到username / repo

上的主分支来简单地添加更多提交

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

答案 1 :(得分:2)

由于无法更改github中的源分支(只能更改目标分支),因此需要“就地”更新源分支。

此答案包含执行此操作的三种方法。

在 Github 中,您会看到:

<块引用>

githubuser 想从“source-branch”合并 N 个提交到 master

既然你会改变“source-branch”的历史,请确保没有其他人在使用这个分支!


重写源分支的历史

如果您是唯一一个在此分支上开发的人,那么您可以使用 Get-ChildItem -Path 'C:\Users\Desktop\mro' | Copy-Item -Destination 'C:\Users\Desktop\shi_data9' -Recurse -Container -Filter "*Touch*" 和更高版本的 git rebase -i

这样你就可以重写这个分支的历史了。

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


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

如果您更喜欢从头开始。

git push --force-with-lease

git rebase --onto

想象一下你的分支“source-branch”意外地基于“release”而不是“master”。但是 github 目标分支是“master”。通过这种方式,您可以将更改更改为在 master 之上:

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

答案 2 :(得分:0)

无法更改源分支,但您可以尝试一些解决方法:

  1. 使用正确的分支重新建立当前的源分支。
  2. 检查是否一切正常,或者您还有一些额外的代码。
  3. 如果有一些额外的代码,请识别提交并从源分支还原这些提交。

答案 3 :(得分:-3)

Screenshot 1 Screenshot2

是的,我们可以在右侧创建拉取请求后编辑基本分支/源,您会获得编辑选项,请参见屏幕快照1,单击该按钮,然后您就可以更改基本/源分支,请参见屏幕截图2封与此评论