Git rebase pull请求

时间:2016-05-16 20:59:54

标签: git github

-->

我的功能分支接受了拉取请求,但是在将其合并到主分支之前,github告诉我“此分支有必须解决的冲突”。该项目的作者希望我改变。我不确定如何完成这件事。这就是我到目前为止所做的:

git clone theproject
git checkout -b myfeaturebranch origin/myfeaturebranch
git rebase origin/master
[fixed conflicts]
git rebase --continue 
[myfeaturebranch is now good to go..somewhere]

此时我该怎么做?:

  1. 我是否会推送到远程myfeature分支,然后在那里创建一个新的拉取请求? (我假设github会让我通过他们漂亮的绿色合并按钮合并,因为不再有任何冲突)。
  2. 或者我现在切换到本地主设备,将本地功能分支合并到其中,然后将其推送到远程主分支?
  3. 由于

3 个答案:

答案 0 :(得分:1)

这取决于你的意思“项目的作者希望我改变”。

如果他们意味着他们希望您在合并之前进行变基,那么您可以选择2(确保您的本地master最先与遥控器保持同步)。

如果您没有权限推送到master,或者项目的作者不想要您,那么您可以:

  • 推送到另一个远程分支并根据该分支创建一个新的pull请求(在解决冲突后将显示绿色合并按钮),然后在GitHub UI中合并。

  • 强行推动(git push -f ...)您的重新分支在已经存在的分支的顶部。这将更新现有的远程分支,GitHub会注意到,然后应该显示没有冲突。这样做会替换现有的分支,因此在特定提交上拉动请求上的任何注释(即不直接在拉取请求上)都将丢失。

答案 1 :(得分:0)

在这种情况下,您提到要求对功能分支进行rebase的是项目的作者/所有者。在这种情况下,您应该通过推送功能分支来完成。由于rebase,您需要使用--force选项来推送分支。然后由作者按原样合并,或重新审核和合并。

所以,你走的一切都是正确的,只需运行:

git push -f

(假设您已签出“myfeaturebranch”)

这会将myfeaturebranch推回到遥控器,覆盖现有的myfeaturebranch

答案 2 :(得分:-1)

rebase中可能发生冲突,rebase消息将显示存在哪些文件冲突。打开这些文件,搜索“HEAD<<<<<<<”用于查找冲突并解决冲突的标记。代码会话标记为“HEAD<<<<<<<<是在树(主)的顶部的代码,而代码正好在“<<<<<<<”的标记之上是您提交的代码。解决冲突后,您必须手动删除这些标记并保留/修改一个版本的代码。 然后,保存修改后的文件,并键入以下命令。

  git add <files have been modified> 
  git rebase --continue