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
我必须向存储库发出拉取请求。
我克隆了这个项目,它只有一个分支: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