首页 > 其他分享 >git merge 和 git rebase 的区别

git merge 和 git rebase 的区别

时间:2023-04-05 11:44:19浏览次数:38  
标签:git rebase merge master 提交 分支

Git版本控制中,git rebasegit merge 这两个命令都可以用来集成从一个分支和另一个分支的更改。它们是两种不同的合并方法,本文将介绍它们的差异。

git rebasegit merge 主要差异是什么?最近ChatGPT大火,请它来回答一下:

Git merge 将两个分支中的所有提交都合并到一起,并创建一个新的合并提交,保留了历史记录。这导致了 Git 历史记录中出现多个分支合并点的情况,从而使历史记录更加复杂。

Git rebase 是将一个分支的提交序列“拉直”,并且将其与另一个分支合并。这意味着,提交历史看起来好像是一条直线,没有分叉,因此整个提交历史看起来更加整洁,历史记录保持相对简单。

总的来说,Git rebase 可以提供更整洁的提交历史,但它需要更多的注意力和精细的操作,因为它可能导致原有的提交变得不可用。Git merge 则是更为保守的合并方法,它更简单,但历史记录更加复杂。因此,选择哪种方法取决于团队和项目的需求和偏好。

不得不说这技术太强大了,回答的太准确了。

下面举例说明一下这两个命令的区别,从 master 拉一个叫feature的分支出来,

feature 分支进行了两次提交,此时其它人也进行了两次提交,并且合并到了 master 分支,

此时是无法push到远程仓库的,需要进行分支合并,下面来演示git rebasegit merge 这两个命令的差异。

1、git merge 操作

执行:

$ git checkout feature
$ git pull origin master  # 相当于git fetch origin master + git merge origin/master feature

git merge命令会在feature分支创建一个新的“合并的提交”(merge commit),现有的分支不会以任何方式改变。

这意味着每次合并上游(upstream)更改时,feature分支将有一个多余的合并提交。如果master分支更新频繁,这可能会导致feature分支历史记录有大量的合并提交记录。

2、git rebase 操作

$ git checkout feature
$ git pull --rebase origin master # 相当于git fetch origin master + git rebase master

此命令将整个 feature 分支移动到 master 分支的顶端,有效地将所有新提交合并到master 分支中。和git merge不同的是,git rebase通过为原始分支中的每个提交创建全新的提交来重写历史记录。

rebase的主要好处就是历史记录更清晰,没有不必要的合并提交,没有任何分叉。

--THE END--

尽管人人都一知半解,但由于我们把别人脑袋里的知识当成了自己的,便自以为上知天文下晓地理。——史蒂文·斯洛曼《知识的错觉》

标签:git,rebase,merge,master,提交,分支
From: https://www.cnblogs.com/hiyong/p/17114779.html

相关文章

  • TortoiseGit如何更换(切换)用户名和密码
     使用场景:   项目开发过程中,更换了新的办公电脑,TortoiseGit如何切换用户名和密码,具体操作步骤如下 步骤: 1、打开电脑上面的控制面板,找到其中的“凭据管理器”,并点击进入; 2、进入凭据管理器之后,选择其中的“Windows凭据”,点击进入;  3、然后普通凭据中的要......
  • Node.js17或更高版本中出现Error: error:0308010C:digital envelope routines::unsupp
    问题描述我在运行别人的Vue项目的时候报各种错误,提示XXX/node_modules/.bin/vue-cli-service:Permissiondenied权限不足的问题。还有一个问题就是:出现Error:error:0308010C:digitalenveloperoutines::unsupported。在网上也查看了解决办法,没有解决。(我之前在Nodejs官网安装......
  • github使用总结
    一、github和本地git绑定1.1本地安装gitwindows10下gitbash安装教程-w_boy-博客园(cnblogs.com)1.2git生产Key,绑定到github1.2.1)、打开git命令窗口,配置用户名(填自己的姓名)gitconfig--globaluser.name“yinhang”1.2.2)、配置用户邮箱(......
  • 解决picgo上传图片到github失败的方法
    今天在typora上写笔记,发现图片不能上传到github上,网上找了几个方法,发现都不能解决问题,一直在报错,折腾一会才解决,下面分享我的解决问题过程:首先先检查自己配置是否有错,检查仓库名是否写错,是否带有空格,picgo空格默认的是‘_’,分支名字可以是main或master,token可以再生成一个复制......
  • Your local changes to the following files would be overwritten by merge问题的解
    问题描述在终端页面输入gitpull,会出现这样一个报错:Yourlocalchangestothefollowingfileswouldbeoverwrittenbymerge;然后一开始没有注意到这个错误跟之前的错误不太一样,就还是按照之前的套路来的,没有解决问题解决发现这样就可以解决啦:gitstashgitpull这样就......
  • gitlab上微服务项目导出和导入
      再点击一次【导出项目】按钮后,会出现下面【下载导出】的按钮,点击该按钮就可以下载项目的压缩包文件了 ......
  • win10同步当前项目git的更新记录到另一个项目
    1.备份某个时间之后的更新文件列表到文件中gitlog--after="2023-4-318:27:44"--name-only--pretty=format:"">commit_files.txt2.根据文件中的记录复制文件到新的文件夹@echooffsetlocalenabledelayedexpansionsetinput_file=commit_files.txtsetoutput_fold......
  • Git——代码管理工具
    摘要Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。但是对于的很多应届毕业生学生没有......
  • Git链接上游仓库
    技术背景在Git的操作过程中,一般的组织内部工作模式可以在同一个仓库上的master-develop-feature不同分支上进行开发,也有一些人和外部协作者会通过Fork到自己本地的仓库进行更新的方案。但是对于Fork仓库的更新有一个问题是,如果长期在自己本地更新,有可能会逐渐脱离原始的分支,甚至......
  • git pull 不用输入用户名密码
    首先需要通过SSH的方式进行连接,而不能通过https的方式连接。如果此前已经把origin的URL设置为https,则可以通过命令行修改:gitremoteset-urlorigin<newurl>SSH公钥涉及命令:##生成公钥ssh-keygen-trsa-C"你的邮箱地址"##查看公钥cat/root/.ssh/id_rsa.pu......