You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

git rebase -s ours使用场景确认及ours指代疑问

Git Rebase时强制采用上游版本的方案解析

核心结论先给你

你要的效果完全可以用 git rebase -s ours upstream/master 实现,下面给你掰扯清楚所有疑问:

关于ours/theirs的指代反转

在Git的rebase操作里,ours和theirs的指代确实和merge场景反过来了:

  • 执行git rebase upstream/master时,Git会把上游分支当作「当前基准分支」(也就是ours)
  • 你的本地提交会被逐个「重演」到这个基准上,此时你的本地提交属于「外来分支」(也就是theirs)

所以你一开始选的命令方向是对的——-s ours就是让Git在处理每个提交的合并时,直接采用上游(ours)的内容,完全忽略你的本地修改。

「清空所有补丁」是什么意思

文档里说的「清空该分支的所有补丁」,翻译成人话就是:你的每个本地提交带来的修改,都会被上游的内容完全覆盖。最终你的本地分支内容会和上游upstream/master完全一致,相当于你之前的本地提交白做了(但历史会变成基于上游的线性结构)。

这对大多数人来说确实没意义——谁没事会丢自己的修改?但对你来说刚好适配,因为你已经把本地变更做成了脚本,之后重新跑一遍脚本就能把改的东西加回去。

再确认一遍你的场景适配性

你的需求是「拉取上游变更,冲突时直接丢本地用上游版本,之后重新应用自己的变更」,git rebase -s ours upstream/master完美匹配:

  1. 它会把你的分支完全对齐到上游最新状态,所有本地修改都会被丢弃
  2. 因为rebase是线性重写历史,之后你用脚本重新生成的变更,会基于干净的上游提交,不会有历史混乱

内容的提问来源于stack exchange,提问作者aarbor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:05:32