Git - 在拉取请求之前修复主分支和功能分支之间的冲突

时间:2016-11-29 11:03:41

标签: git github branch pull

我必须向回购提出拉动请求。 我克隆项目,它只有一个分支:master

我签出了一个新分支feature并将我的更改提交到此分支。

我将我的分支推送到Github,我现在能够提出拉取请求。所以我这样做,但它现在告诉我,我有冲突。 enter image description here

我理解这个问题。 master领先feature,因为我没有"拉"我在处理feature时已经掌握的最后一些更改。

我该如何解决?我怎样才能"拉" master的最后一次更改到我的feature分支?

2 个答案:

答案 0 :(得分:9)

通过合并修复:

git fetch origin         # gets latest changes made to master
git checkout feature     # switch to your feature branch
git merge master         # merge with master
# resolve any merge conflicts here
git push origin feature  # push branch and update the pull request

通过rebase修复:

git fetch origin         # gets latest changes made to master
git checkout feature     # switch to your feature branch
git rebase master        # rebase your branch on master
# complete the rebase, fix merge conflicts, etc.
git push --force origin feature

请注意,可能需要在重新定位后推送--force选项,因为rebase会有效地重写feature分支。这意味着您需要通过强制推送覆盖GitHub中的旧分支。

无论您是进行合并还是改造,之后都应解决冲突,并且您的审核人员应该能够完成拉取请求。

答案 1 :(得分:2)

$ git checkout feature                  
$ git fetch
$ git pull origin master

现在应该发生冲突。现在,如果你想保持主人的改变

$ git status                           # See the untracked files (conflict files)
$ git checkout --theirs <file-name>    # Accept the master's change

或者,如果你想保留你的(features更改):

$ git checkout --ours <file-name>

添加,提交并推送feature分支

$ git commit -am <commit-message>      # Add & Commit
$ git push origin HEAD                 # Push to remote feature branch