git主分支覆盖子分支
本例子展示的是主分支“强制”覆盖子分支;也就是说你决定不再需要你的子分支了;
1 本地pull 主分支master的最新代码;git log 看最新的日志;
2 git push origin master:temp
相当于拉一个字分支叫temp;如果temp本来就存在,那主分支的更新原则上会覆盖子分支的东西;
但是实际上可能会有这样的错误:
! [rejected] master -> temp (non-fast-forward) error: 无法推送一些引用到 'https:/****' 提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。 提示:再次推送前,先与远程变更合并(如 'git pull ...')。详见 提示:'git push --help' 中的 'Note about fast-forwards' 小节。
这是为什么呢?
说明你的字分支拉取时候的版本,后来在主分支是倍别人改了很多,但是你没有及时同步,你又基于拉取时候的分支做了修改;
“别人上传到远程仓库后,你没有及时的同步(、拉取)到本地,但是你同时又添加了一些内容(提交),以致于你在提交时,它会检测到你之前从远程仓库拉取的时候的仓库状态和现在的不一样。于是,它为了安全起见拒绝了你的提交(然后就报了这个错误)。-https://blog.csdn.net/weixin_41287260/article/details/89742151”
3 此时,为了方便,我也不想要我的分支了,因为我修改的很少我用文本文件把我修改的东西保存下来了;那我就强制用master把我的temp分支覆盖:git push origin master:temp -f
之后我再把我刚才在temp上的修改重新写一下。。。这个方法有些麻烦的;
4 假设我的git上边的时间线是这样的

这种写法并不能成功的将“我的git上边的时间线的代码”主分支合并到temp分支;因为merge是下图这个样子的:而我上边的git状态,除了共同的起始点,还有共同的X状态的,就是说我在temp上改的不仅出现在temp分支上,master上也有的;
我的合并前状态:合并的原理是找到共同的起源,现在共同的起源应该是master0,但是绿色的圈(我自己修改的代码)对merge有影响
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库