首页 > 其他分享 >git rebase分支的流程和注意事项

git rebase分支的流程和注意事项

时间:2023-09-22 16:45:10浏览次数:32  
标签:git 哈希 rebase dev merge 提交 注意事项 分支

比如有两个开发了比较多功能的分支,或者在比较久的一次提交上做了一个hotfix,这个时候如果合并,通过ui查看会有一条额外的很长的线连接过来,不美观,看起来也不方便。

可以用rebase进行变基,强行把两个分支的内容合并到一起。

rebase与merge的区别

merge就是把两个分支,当前的内容,进行比较,如果没有冲突,就把对应的内容做修改,产生一次新的提交。

rebase是把指定的分支作为当前分支的底座,从相同的起点开始(因为大家肯定是从某次提交切分出来的),把当前的提交按照新的基础,再一次提交一遍。这样就会产生一条新的提交线,并且只有这一条。

流程

注意 如果分支太多,或者太杂乱,并且对rebase不熟悉,建议不要rebase,可能会导致代码丢失。

一在开发分支上rebase依赖的主分支

比如有一个dev分支,突然来了一个小任务,切了一个dev_hotfix分支,开发完成后,需要在dev_hotfix上rebase dev分支。

因为rebase后,整个分支的HEAD的哈希值会变掉,就是虽然内容一致,也会更改,这也是与merge不同的地方,merge是增加一个新提交,都是向前进的,而rebase是修改每一次提交,并没有前进。如果在公共分支上rebase,就会导致与远程分支冲突,这时候不管怎么解决都很恶心,如果pull加merge,就会出现相同的提交存在两次,因为git通过哈希值判断,虽然是相同提交,因为rebase做了重新提交,所以哈希值变了,就会认为是不同提交,就存在了两个;如果强制push,那么所有人都会冲突,还会导致远程代码和其他人代码丢失。所以切忌不要在公共分支rebase。

在依赖分之上merge rebase后的分支

上面也说明了,肯定不可能在公共分支上rebase,那么只有merge了。有人会问,merge后不会出现额外多一条线的情况吗,答案是不会的,因为开发分支已经以依赖分支变基了,相当于在依赖分支上做的开发,当merge过来后,就相当于在依赖分支上依次提交了记录,在自己分支上提交记录,怎么会额外多一个提交流程呢。

总的来说,rebase相当于在一个基础上,依次提交当前分支的记录;merge是把两个分支合并

标签:git,哈希,rebase,dev,merge,提交,注意事项,分支
From: https://www.cnblogs.com/studywithallofyou/p/17722803.html

相关文章

  • 创建mdbook和gitbook文档
    mdbook:https://github.com/AgoCan/code-generator/blob/main/docs/mdbook.mdgitbook:https://github.com/AgoCan/code-generator/blob/main/docs/gitbook.md直接执行脚本,然后就可以直接使用了......
  • 从GitHub更新代码后新的项目类的图标会变成大写的J解决办法【杭州多测师_王sir】
     项目地址:https://github.com/macrozheng/mall-learning/tree/teach一、切换分支更新GitHub的代码发现拉取下来变文件夹了,类的图标会变成大写的J二、解决办法:找到项目的pom.xml右键,在靠近最下方的位置找到Add as Maven Project点击即可。此时,一般类的图标就变成C了,但是可......
  • Git指令
    记录常用的Git指令。配置username和emailgitconfiguser.name"[email protected]"gitconfiguser.email"[email protected]"替换user-name和emailitconfig--replace-alluser.name"adma"itconfig--replace-alluser.email"[email protected]&quo......
  • Learn Git in 30 days—— 第 23 天:修正 commit 过的版本历史记录 Part 5
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn 我们上一篇文章谈到的Rebase是用来将现有的两个分支进行「重新指定基础版本」,执行Rebase之后,也会改掉原本分支的起点(分支点移动了),所以导致版本线......
  • git回退版本方法
    因为idea不知道什么原因抽风,把一些忽略的文件也推送了,须要回退版本1.首先,注意备份2.具体回退方法,来自文心一言ai大模型的回答git回退命令是gitreset--hard1。使用gitreset--hard命令会将HEAD指针、当前分支指针和索引区都移动到指定的commitID,从而重置工作区为该版......
  • git submodule多模块开发
     开发中遇见了这样一个问题,ABC三个项目都要使用到同一个模块的一些功能,并且这个模块的功能根据ABC三个项目场景需要一些代码逻辑改动(ABC可以理解为三个使用了不同base工具包的项目,或者相同base工具包但是版本不同等),这个时候git的submodule可能会帮你解决这个问题。......
  • Git版本控制工具
    Git版本控制工具一.简介1、git是一款分布式的版本控制工具,使用git每台本地主机都可以作为一个本地库,每个本地库可实现资源的相互共享,也可以把本地库的资源推送到远程仓库中(码云、github),不同本地库可以作为一个节点,允许有多个节点之间实现资源共享,避免了单点故障。2、与SVN区......
  • Git忽略提交规则 - .gitignore配置运维总结
    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用gitadd.的时候,遇到了把你不想提交的文件也添加到了缓存中去的情况,比如项目的本地配置信息,如果你上传到Git中去......
  • git多个commit合并成一个
    前言一个功能有多个commit要合并成一个更加美观操作打开gitbase1.输入gitlog-8  //查看前8条提交2.输入gitrebase-iHEAD~3  //表示最近的3条合并成一条3.输入完后界面如下,按i进入编译模式,将第2,3个pick改为s,表示将后2条合并到第一条中,然后按esc退出编译模式,然后......
  • git 查看代码行数
    统计当前项目代码行数gitls-files|xargscat|wc-l细分每个文件的代码行数,相当于把上面命令细化:gitls-files|xargswc-l  【git】Git指令统计代码行数_git统计代码行数_bandaoyu的博客-CSDN博客如何用git查看代码行数_笔记大全_设计学院(python100.com)......