首页 > 其他分享 >git rebase

git rebase

时间:2023-08-05 15:00:21浏览次数:34  
标签:缩写 git rebase 合并 提交 commit

git rebase 可以帮助项目中的提交历史干净整洁!!!

一.自动合并多个commit记录

命令

git rebase -i [startpoint] [endpoint]

其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。

git rebase -i HEAD~3

上面代码的意思是合并最近三次提交的记录

eg

当前提交如下

现在要合并test1,test2,test3这三个提交,先执行命令

git rebase -i 2ba7d98a a205cfb2

或者

git rebase -i 2ba7d98a

或者

git rebase -i HEAD~3

这三个命令都可以,提交完后弹出如下页面

上面未被注释的部分列出的是我们本次rebase操作包含的所有提交,下面注释部分是git为我们提供的命令说明。每一个commit id 前面的pick表示指令类型,git 为我们提供了以下几个命令:

  pick:保留该commit(缩写:p)
  reword:保留该commit,但我需要修改该commit的注释(缩写:r)
  edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
  squash:将该commit和前一个commit合并(缩写:s)
  fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
  exec:执行shell命令(缩写:x)
  drop:我要丢弃该commit(缩写:d)

 

在vim编辑框进行操作,一般有下面两种

两种的区别就是test1那里一个是p,一个是r,两种都可以,根据具体需求去操作

然后按下“esc”键,退出编辑,然后输入“:wq” 保存修改

如果test1选择了r,会弹出如下编辑commit的界面

对test1进行编辑,写一个总的提交commit,

然后按下“esc”键,退出编辑,然后输入“:wq” 保存修改,如下图

继续按下“esc”键,退出编辑,然后输入“:wq” 保存修改

此时查看提交记录,已经变成了一条

 

二.避免合并出现分叉现象git merge操作

eg 在dev分支有两个提交V1,v2,在test分支有两个提交V3,v4,如果用merge合并,就会是下面这样

在合并的时候就会产生分支的效果

下面用rebase看看是啥效果

先把代码切换到合并的分支(这里是test),然后执行 git rebase test

git checkout test
git rebase dev

此时的合并记录如下

 提交的记录就在一条线上了

继续上面的提交,如果git rebase dev的时候有冲突怎么办,现在两个分支改了同一个文件,有冲突了,如下

 要做的是先解决冲突,然后执行代码

git add .
git rebase --continue

后面的步骤就和git rebase的操作相同了

 

标签:缩写,git,rebase,合并,提交,commit
From: https://www.cnblogs.com/ttjm/p/17606249.html

相关文章

  • git初始化裸仓库和更改仓库名
    1)初始化裸仓库举个例子:初始化裸仓库,用于做为git服务端共享仓库gitinit--bare<repo>使用“普通库”代指用"gitinit"命令创建的git库;使用“裸库”代指用"gitinit--bare"命令创建的git库;裸仓库适用于远程仓库,裸仓库可以直接作为服务器仓库供各开发者push、pull数据,实现......
  • gitlab的日常使用
    (gitlab的日常使用)一、登录gitlab二、修改当前用户的密码三、项目管理1.新建项目2.查看该项目四、导入sshkey项目地址有HTTP和SSH两种方式-------可发送给开发人员下载和初始化项目如果通过SSH方式拉取推送项目代码必须要导入SSHkey1.选择ssh方式2.选择设置列......
  • vscode配置gitbash终端
    VSCode是一款微软出的轻量级编辑器,它本身只是一款文本编辑器而已,所有的功能都是以插件扩展的形式所存在,想用什么功能就安装对应的扩展即可,非常方便,同时也支持非常多的主题和图标,外观比较好看,重要的是VSCode支持各大主流操作系统,包括Windows、Linux和MacOS。所以就选择它作为自己的......
  • Ubuntu上安装Git
    要在Ubuntu上安装Git,可以按照以下步骤进行:打开终端。运行以下命令更新包列表:Copysudoaptupdate运行以下命令安装Git:Copysudoaptinstallgit系统会提示您输入密码确认安装,输入密码并按下Enter键。等待安装完成。安装过程可能需要一些时间,具体时间取决于......
  • git remote 修改远程仓库连接
    因为某些原因,你的仓库IP或网址编了,不得不修改远程仓库的地址。方法一:删除本地仓库,重新从远程拉取仓库。这样虽然简单,但是耗时间。方法二:命令行,修改https协议地址假设,本地仓库关联了gitee远程仓库,执行下面命令gitremote-v显示:originhttp://gitee.com/aabb/repo.gi......
  • 真·生产力「GitHub 热点速览」
    这些工具真的能极大提高生产力,节约你的时间来自(摸)我(鱼)增(划)值(水)。先别提style2paints,你给它随意画个草图,就能给你一个能交付给甲方爸爸的成品插画。如果提升30%-40%传输速度的kcp不够惊艳,还有想象力匮乏程序员的福音——rerun,直接让你带入计算机视角看待那些图片、视频信息。而......
  • gitlab--image
    image在我们之前的例子中,我们都是在执行器为shell的runner中运行的,但这不能满足我们的场景。例如我们在ci中需要构建镜像,然后推送到镜像仓库里面。这时候我们就要使用docker的执行器来工作了我们先来注册一个docker执行器的runner#进入到runner容器里面[root@dc......
  • CVE-2021-22204 GitLab RCE之exiftool代码执行漏洞深入分析(二)
    文章写于2022-01-19,首发在天融信阿尔法实验室目标导读1前言2前置知识2.1JPEG文件格式2.2Perl模式匹配3exiftool源码调试到漏洞分析3.1环境搭建3.2漏洞简介3.3exiftool是如何解析嵌入的0xc51b标签3.4exiftool是如何调用parseAnt函数3.5parseAnt函数分......
  • CVE-2021-22205 GitLab RCE之未授权访问深入分析(一)
    文章写于2021-11-29,首发在天融信阿尔法实验室前言安全研究员vakzz于4月7日在hackerone上提交了一个关于gitlab的RCE漏洞,在当时并没有提及是否需要登录gitlab进行授权利用,在10月25日该漏洞被国外安全公司通过日志分析发现未授权的在野利用,并发现了新的利用方式。根据官方漏洞通......
  • GitHub中最火的开源项目及编程语言
    GitHub目前已经成为全球最流行的开源项目托管平台,目前托管在GitHub上的项目数量已经达到了1000万,而达到这一里程碑只用了不到4年的时间,这足以见得开源的趋势以及GitHub的受欢迎程度。 2012年8月,GitHub在每个项目主页面中加入了Star功能,允许用户通过标注Star的形式来标记自己感兴趣......