我的团队正在从 git merge 工作流转移到 rebase 工作流,但我不明白我做错了什么。我主要从 this blog post 开始工作作为模板。最终,希望能够提交一个 github pull request,其中包含我分支的提交,不会与 master 发生 merge 冲突。如果该 pull 请求只能包含我的提交(用于代码审查目的),那就太好了。
场景如下:
- 我为我的功能创建了一个 master 分支
- 做一些工作...
我从 master rebase 到我的本地分支:
git fetch git rebase origin/master
我会处理任何 merge 冲突,然后继续使用
git mergetool git rebase --continue
因为我是唯一一个在我的分支上工作的人,我希望能够通过以下方式 push 我的当前状态
git push origin myBranch
但是,当我尝试推送时,我得到以下信息
$ git push origin myBranch To <github address> ! [rejected] myBranch -> myBranch (non-fast-forward) error: failed to push some refs to <github address> hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
- 如果我尝试
git rebase origin/myBranch
我会遇到很多冲突,因为我从 master pull 的提交提示我的分支中存在的提交来自之前的 rebase (但我个人从未改变过)。
最佳答案
如果您不想强制推送 (push -f
) 您的功能分支,您必须避免在已经将功能分支推送到 GitHub 后对其进行 rebase 。
我使用此工作流程而没有遇到您在第 6 步中提到的错误。
git checkout master
git pull
git checkout -b feature_branch
git commit -m "完成我的工作"
git checkout master
git pull
git checkout feature_branch
git rebase master
- Resolve merge conflicts .
git push origin feature_branch
- Open pull request .
作为mipadi在 his answer 中说,如果您在 checkout 功能分支时执行以下操作,则必须强制推送您的功能分支:
git push origin feature_branch
git rebase master
git push origin feature_branch
# 错误git push -f origin feature_branch
最后一个命令——git push -f origin feature_branch
——如果你是唯一一个在该分支上工作的人,应该不会造成任何问题。
关于git - 我的 git rebase 工作流程做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616039/