merge -X ours 是什么
git merge -X ours 在合并时告诉 Git:凡是双方改到同一区域产生的冲突,直接采用当前分支(ours)一侧的内容,不报冲突;其余未冲突的改动照常并入。它属于合并策略的辅助选项(-X 后面跟策略选项),不是 -s ours 那种「整体取我方」的语义。典型用途是产线上的紧急处理:让某个长期定制分支保持自己的版本,同时吃进上游的其余更新。
基本信息
| 用途 | 冲突块自动采用当前分支版本 |
|---|---|
| 语法 | git merge -X ours <分支> |
| 作用范围 | 仅冲突区域取我方,非冲突改动照常合并 |
| 单文件写法 | git checkout --ours -- <文件> |
| 平台 | 任意 Git 客户端 |
典型使用场景
- 长期定制分支需要吸收上游更新,但关键配置必须保留本地版本
- 发布收尾阶段先让主干通过构建,细节冲突稍后统一处理
- 合并自动生成的文件(锁文件、快照)时,用我方版本避免无意义冲突
- 把上游模板更新并入已有定制项目,保留本地个性化部分
- 紧急恢复时快速得到一个可运行版本,事后再人工校正
- 逐文件处理时只对个别文件采用我方版本
常用示例
常用示例
git switch main
git merge -X ours release/hotfix # 冲突块取当前分支
git log --stat -1 # 查看合并结果
git diff HEAD^ --stat # 复核被带入的改动仅对单个文件取我方
仅对单个文件取我方
git merge upstream/main # 先正常合并,产生冲突
git checkout --ours -- config/app.yaml
git add config/app.yaml
git commit几种「取我方」的区别
| 写法 | 含义 |
|---|---|
| -X ours | 仅冲突块取我方,非冲突内容仍会并入 |
| -s ours | 整体忽略对方内容,只记录一次合并关系 |
| checkout --ours | 对指定文件取出我方版本,常用于逐文件处理 |
自动取一侧只解决文本冲突,会静默丢弃对方在冲突区域内的修改;合并后务必 diff 复核,它适合紧急恢复而不是日常流程。