使用git rebase -i HEAD~N合并提交时如何确定N的取值?
快速获取rebase所需N值/免数N的实操方法
你需要的N本质是当前PR分支相对于PR目标基准分支(通常是上游仓库的main/master分支)的领先提交数,不需要手动逐个数,有两种非常方便的落地方案:
方案1:单行命令直接输出准确N值
- 第一步先拉取上游仓库最新代码,避免基准分支代码过旧导致计数偏差:
git fetch upstream
- 执行以下命令,终端输出的数字就是你要填的准确N:
git rev-list --count upstream/main..HEAD
提示:如果你的PR目标分支是master、dev等其他分支,把命令里的upstream/main替换成实际的目标分支名即可,比如upstream/master
方案2:跳过算N步骤,直接基于基准分支做交互式rebase
你完全不需要手动拼HEAD~N的参数,直接把基准分支名传给rebase命令,git会自动把所有当前分支独有的提交列在交互界面里,不会多算也不会漏算:
git rebase -i upstream/main
进入交互界面后,正常把除第一个提交外的所有提交标记为squash,保存退出完成提交合并,最后执行git push --force-with-lease推送到你的PR分支就完成要求了。
前置配置说明
如果你本地还没添加上游仓库的远程地址,先执行下面的命令添加即可:
git remote add upstream <上游仓库的git克隆地址>
内容的提问来源于stack exchange,提问作者guettli
相关产品推荐
相关产品推荐

