Git合并Staging与Master时,如何用Staging覆盖Master解决冲突?
用Staging分支完全覆盖Master分支的两种方法
嘿,我明白你现在的困扰——想把Staging的内容完全覆盖Master,却被一堆合并冲突卡住了。先给你理清关键概念,再一步步教你操作:
先搞懂ours和theirs的含义
当你在Master分支执行git merge staging时:
ours:指的是当前所在的分支(也就是Master),用它的内容覆盖冲突文件theirs:指的是你要合并进来的分支(也就是Staging),这正是你需要的——用Staging的内容覆盖所有冲突
方法一:通过合并操作保留历史记录(推荐需要保留合并轨迹的场景)
这种方法会在Git历史中留下一条合并记录,适合需要追踪“Staging合并到Master”这个操作的情况:
切换到Master分支并确保本地是最新状态:
git checkout master # 如果Master有远程分支,先拉取最新版本(可选,根据你的场景) git pull origin master执行合并命令,此时会触发冲突:
git merge staging用Staging的内容覆盖所有冲突文件:
# 注意末尾的点号,表示处理当前目录及所有子目录的文件 git checkout --theirs .标记所有冲突已解决:
git add .完成合并提交:
git commit -m "Merge staging into master, fully overwrite with staging content"
方法二:直接重置Master到Staging的提交(更简洁,无合并记录)
如果你不需要保留合并历史,只想让Master完全和Staging一模一样,这种方法更直接:
注意:这个操作会丢弃Master分支上所有未合并到Staging的本地提交,执行前请确认这些提交是你不需要的!
切换到Master分支:
git checkout master直接将Master分支的HEAD重置到Staging的最新提交:
git reset --hard staging如果Master是远程分支,需要强制推送到远程(注意:强制推送会覆盖远程Master的历史,团队协作时一定要提前沟通!):
git push origin master --force
小提示
- 执行任何覆盖操作前,建议先备份当前Master分支(比如创建一个临时分支
git checkout -b master-backup),防止误操作导致数据丢失 - 如果遇到个别文件需要特殊处理(不想完全覆盖),可以单独针对该文件执行
git checkout --theirs <文件名>,再处理其他文件
内容的提问来源于stack exchange,提问作者BRDroid
相关产品推荐
相关产品推荐

