论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
开源技术
›
开源技术
›
Git必知必会底子(10):当地辩论(conflicts)解决--reba ...
Git必知必会底子(10):当地辩论(conflicts)解决--rebase
我可以不吃啊
论坛元老
|
2024-8-30 05:34:48
|
显示全部楼层
|
阅读模式
楼主
主题
1933
|
帖子
1933
|
积分
5799
本系列汇总,请查察这里
:https://www.cnblogs.com/uncleyong/p/10854115.html
关于rebase
rebase用来变基,就是重新定义(re)出发点(base)的作用,即重新定义分支的版本。
在执行变基的过程中,三个常用下令:
git rebase --skip 它表示丢弃当前补丁的重放,即忽略掉当前补丁
git rebase --abort 它表示终止正在进行的变基操作,并且恢复到最初始的状态
git rebase --continue 它表示继续补丁的重放,一般在解决冲突后执行该命令
复制代码
演示场景
在合并分支过程中,可能会遇到辩论,本篇演示用rebase解决当地辩论。
基于master主分支,创建两个
开发
分支dev_a和dev_b,分别做修改:
dev_a第一次修改并提交到当地仓库,然后推送到远程仓库
dev_b第一次修改并提交到当地仓库,然后推送到远程仓库
dev_a第二次修改并提交到当地仓库,然后推送到远程仓库
dev_b第二次修改并提交到当地仓库,然后推送到远程仓库
先合并dev_a:切换到dev_a,rebase master分支,没有辩论,然后切换到master,举行merge
然后合并dev_b:切换到dev_b,rebase master分支,产生辩论,解决辩论,然后切换到master,举行merge,最后push到远程master分支
准备数据
远程数据
远程commit id
克隆到当地
文件内容
创建dev_a分支
修改qzcsbj.txt内容,然后提交到当地仓库
切换到master,创建dev_b分支
修改qzcsbj.txt内容,然后提交到当地仓库
再次切换到dev_1做一次提交,然后推送到远程仓库
再次切换到dev_2做一次提交,然后推送到远程仓库
远程分支内容
合并分支并解决辩论
切换到master,拉取最新master
先合并dev_a,下面没有辩论,变基乐成并更新refs/heads/master
切换到master举行merge
push到远程
然后合并dev_b分支,产生辩论,辩论文件是qzcsbj.txt
也可以这样查察辩论的文件:git diff --name-only --diff-filter=U
查察分支差异:git diff master dev_b
辩论文件内容:
HEAD(ef2d957)体现dev_b第一次提交
修改辩论文件
add
继续rebase
第一行改为:
保存退出后的结果:天生的新提交id是bd16a7c
依然有辩论,HEAD(bd16a7c)体现dev_b第二次提交
辩论文件内容:
修改辩论文件,然后add
继续rebase
第一行改为:
保存退出,结果:变基乐成并更新refs/heads/master
文件内容:
切换到master,执行merge
master送到远程仓库
假如dev_b在合并前做了许多次commit,那么就要处理许多次辩论,每次解决后执行git rebase --continue
对于单条分支,rebase可以或许合并多个commit,将多个提交合并成一个提交,下令是:
git rebase -i [commit id]
复制代码
合并commit id之前的全部commit;-i选项可以或许提供一个交互界面,分阶段修改commit信息并rebase。
查察分支合并图
git log --graph --oneline
git log --graph
结论:会修改提交历史,无法直观地看出哪些提交是在原分支上完成的,历史记录是一条直线(线性),会显得更为整洁,合并图更易读
分支后续操作
此时分支假如不要了就可以删除
假如要继续在分支在
开发
,需要同步master分支,rebase即可:
切换到对应分支,使远程库和本地库同步:git pull --rebase origin master
如果有冲突忽略冲突(丢弃当前补丁的重放,即忽略掉当前补丁):git rebase --skip
如果有冲突,强制推送:git push -f origin 当前分支名,如果没有冲突:git push origin 当前分支名
复制代码
这里基于dev_a分支演示
当地
远程
无辩论
rebase远程master分支
推送dev_a到远程分支
远程分支内容
commit id和主分支的一样
有辩论
修改dev_a分支文件内容,并推送到远程分支
切换到master
修改master分支文件内容,然后推送到远程
切换到dev_a分支,rebase远程master,出现辩论
丢弃当前补丁的重放,即忽略掉当前补丁,变基乐成并更新refs/heads/master
文件内容和master一样
dev_a远程内容
push到远程,报错
强制push到远程
远程分支内容
commit id和master一样
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
我可以不吃啊
论坛元老
这个人很懒什么都没写!
楼主热帖
如何编写一个高效的Testbench? ...
HeadPose Estimation头部姿态估计头部 ...
微信小程序
Python输出指定时间间隔内的日期 ...
Python 将 docx 转为 PDF
【笔者感悟】笔者的学习心得【七】 ...
HBuilder X 连接苹果手机(IOS)详细教程 ...
接口测试测什么?这篇文章告诉你 ...
CVE-2015-5254漏洞复现
【必知必会的MySQL知识】①初探MySQL ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
程序人生
数据仓库与分析
Oracle
DevOps与敏捷开发
快速回复
返回顶部
返回列表