如何修复“newCommits分支落后master分支1个提交”的问题?
分支合并后落后master的处理方案
问题背景
从origin/master分支创建newCommits分支,开发完成后提交推送到远程,通过GitHub网页端PR合并到master后,newCommits分支提示“落后master分支1个提交”——这是因为PR合并时GitHub自动创建了一个合并提交,该提交仅存在于master分支,导致两个分支的提交历史出现差异。
处理方案
根据分支是否还需要继续使用,分两种情况处理:
情况1:newCommits分支已完成使命(功能已合并)
直接删除本地和远程分支即可:
- 本地操作:切换到master分支,执行命令
git branch -d newCommits - 远程操作:执行命令
git push origin --delete newCommits
情况2:需要继续使用newCommits分支开发
推荐两种方式,按需选择:
方式一:变基(Rebase,保持提交历史线性)
这是更规范的做法,能避免多余的合并提交:
- 切换到
newCommits分支:git checkout newCommits - 拉取远程master最新代码:
git fetch origin master - 执行变基:
git rebase origin/master- 若遇到冲突,解决冲突后执行
git add .,再执行git rebase --continue,直到变基完成
- 若遇到冲突,解决冲突后执行
- 强制推送到远程(变基修改了提交历史,必须强制推送):
git push origin newCommits --force-with-lease--force-with-lease比单纯--force更安全,可避免误覆盖他人提交
Android Studio 可视化操作:
- 打开底部的Git工具窗口,切换到
newCommits分支 - 点击工具栏的
Fetch拉取远程最新代码 - 右键点击
origin/master,选择Rebase current branch onto selected - 冲突时在Android Studio的冲突解决界面处理,完成后点击
Continue Rebase
GitHub Desktop 可视化操作:
- 切换到
newCommits分支 - 点击顶部
Branch菜单,选择Rebase current branch onto... - 选择
origin/master并点击Rebase - 冲突时按提示解决,完成后GitHub Desktop会自动提示需要强制推送,确认即可
方式二:合并master到newCommits(保留合并提交,历史有分叉)
如果不想修改提交历史,可直接合并master的最新代码:
- 切换到
newCommits分支:git checkout newCommits - 拉取远程master最新代码:
git fetch origin master - 合并代码:
git merge origin/master - 推送到远程:
git push origin newCommits
这种方式会产生新的合并提交,提交历史会出现分叉,但操作简单,适合新手快速上手。
常见疑问解答
不需要每次提交都克隆仓库,只需在继续开发前,拉取最新的master分支代码,再执行上述的变基或合并操作即可。
内容的提问来源于stack exchange,提问作者Rishi Matura
相关产品推荐
相关产品推荐

