我的功能分支接受了拉取请求,但是在将其合并到主分支之前,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]
此时我该怎么做?:
由于
答案 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