Git - 修复拉取请求前 master 和 feature 分支之间的冲突

Git - Fixing conflict between master and feature branch before pull request

我必须向存储库发出拉取请求。 我克隆了这个项目,它只有一个分支:master

我检出一个新分支 feature 并将我的更改提交到该分支。

我将我的分支推送到 Github,现在我可以发出拉取请求。所以我这样做了,但现在它告诉我我有冲突。

我明白这个问题了。 master 领先于 feature,因为我没有 "pull" 在我处理 feature 时掌握的最后更改。

我该如何解决?我如何 "pull" master 的最后更改到我的 feature 分支?

通过合并修复:

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

通过变基修复:

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

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

无论您是进行合并还是变基,之后应该解决冲突并且您的审阅者应该能够完成拉取请求。

$ 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