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

Git合并Staging与Master时,如何用Staging覆盖Master解决冲突?

用Staging分支完全覆盖Master分支的两种方法

嘿,我明白你现在的困扰——想把Staging的内容完全覆盖Master,却被一堆合并冲突卡住了。先给你理清关键概念,再一步步教你操作:

先搞懂ours和theirs的含义

当你在Master分支执行git merge staging时:

  • ours:指的是当前所在的分支(也就是Master),用它的内容覆盖冲突文件
  • theirs:指的是你要合并进来的分支(也就是Staging),这正是你需要的——用Staging的内容覆盖所有冲突

方法一:通过合并操作保留历史记录(推荐需要保留合并轨迹的场景)

这种方法会在Git历史中留下一条合并记录,适合需要追踪“Staging合并到Master”这个操作的情况:

  1. 切换到Master分支并确保本地是最新状态:

    git checkout master
    # 如果Master有远程分支,先拉取最新版本(可选,根据你的场景)
    git pull origin master
    
  2. 执行合并命令,此时会触发冲突:

    git merge staging
    
  3. 用Staging的内容覆盖所有冲突文件:

    # 注意末尾的点号,表示处理当前目录及所有子目录的文件
    git checkout --theirs .
    
  4. 标记所有冲突已解决:

    git add .
    
  5. 完成合并提交:

    git commit -m "Merge staging into master, fully overwrite with staging content"
    

方法二:直接重置Master到Staging的提交(更简洁,无合并记录)

如果你不需要保留合并历史,只想让Master完全和Staging一模一样,这种方法更直接:

注意:这个操作会丢弃Master分支上所有未合并到Staging的本地提交,执行前请确认这些提交是你不需要的!

  1. 切换到Master分支:

    git checkout master
    
  2. 直接将Master分支的HEAD重置到Staging的最新提交:

    git reset --hard staging
    
  3. 如果Master是远程分支,需要强制推送到远程(注意:强制推送会覆盖远程Master的历史,团队协作时一定要提前沟通!):

    git push origin master --force
    

小提示

  • 执行任何覆盖操作前,建议先备份当前Master分支(比如创建一个临时分支git checkout -b master-backup),防止误操作导致数据丢失
  • 如果遇到个别文件需要特殊处理(不想完全覆盖),可以单独针对该文件执行git checkout --theirs <文件名>,再处理其他文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:17:46