aliases: []
tags: [git]

link:

date: 2022-08-30

git pull --rebase

在 push 代码时,会提示使用 git pull 命令,也就是拉取远端代码,更新我们的仓库,那么为什么又要加个 --rebase 命令呢?下面来说说这个问题,先从这两命令开始。

git pull = git fetch + git merge FETCH_HEAD

git pull --rebase =  git fetch + git rebase FETCH_HEAD

二者的区别是,在 fetch 之后的操作不同,merge 与 rebase 的不同。

假设当前 master 的提交如下:

如果是你或者你的同事在 cid2 点,开发进度是 cid20(或者突然撇出一个分支,假设是 tmp 分支),此时要把 cid20 提交到 master

在 master 执行 git merge tmp, 然后会得到如下结果:

那么来看看 git rebase,  在 master 执行 git rebase tmp,操作之后的分支如下:

二者对比可知,rebase 没有产生新的节点,使用 rebase 的 git 演进路线 (提交树) 是一直向前的,这样在版本回退时也很容易,用 merge 的 git 路线是跳跃的,如果版本回退你也找不到自己想要的版本,如果在 merge 时出现了冲突那就麻烦了,当前 merge 就不能继续进行下去,需要手动修改冲突内容后,add,commit, push. 而 rebase 操作的话,会中断 rebase, 进入rebasing状态,这时我们需要解决冲突后执行git add,然后执行git rebase --continue直至冲突解决完毕,自动退出rebasing状态,再 push.

想要更好的提交树,建议使用 rebase 操作会更好一点,这样可以线性的看到每一次提交,并且没有增加提交节点。不过也有些项目,不建议使用 rebase, 这就得看公司与项目的规定。

等效命令

  1. git stash先暂存代码
  2. git pull拉到最新
  3. git add并commit

总结

在提交代码前如果无法拉取最新代码,除了可以使用git stash暂存,还可以使用git commit配合git pull --rebase提交代码,最终达到减少代码”不良记录“的目的

参考文章

blog.csdn.net

git pull与git pull --rebase的更多相关文章

  1. Difference between git pull and git pull --rebase

    个人博客地址:  http://www.iwangzheng.com/ 推荐一本非常好的书 :<Pro Git>  http://iissnan.com/progit/ 构造干净的 Git ...

  2. 对比git pull和git pull --rebase

    1.使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 2 一.基本 g ...

  3. 简单对比git pull和git pull --rebase的使用

    使用下面的关系区别这两个操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 现在来看看git m ...

  4. 【Git】git pull和git pull --rebase的使用

    git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 现在来看看git merge和git rebase ...

  5. git fetch 、git pull 与 git pull --rebase

    1. git fetch 与 git pull 都是从远程拉取代码到本地,git fetch只是拉取到本地,git pull不仅拉取到本地还merge到本地分支中.所以git pull是git fet ...

  6. git pull和git pull --rebase的使用

    使用下面的关系区别这两个操作: git pull = git fetch + git merge git pull --rebase = git fetch + git rebase 现在来看看git ...

  7. 差异:git clone , git fetch, git pull和git rebase

    随笔 - 96  文章 - 1  评论 - 6   Git Pull据我所知,当你使用git pull时,它将会获取远程服务器(你请求的,无论什么分支)上的代码,并且立即合并到你的本地厂库,Pull是 ...

  8. Git 协作:Fetch Pull Push Branch Remote Rebase Cherry-pick相关

    前言 学习git的时候,我们首先学习的是最常用的,自己独立开发Software时用的命令: git init //初始化git仓库 git add <file_name> //将文件添加到 ...

  9. git pull、git fetch、git merge、git rebase的区别

    一.git pull与git fetch区别 1.两者的区别       两者都是更新远程仓库代码到本地. git fetch相当于是从远程获取最新版本到本地,不会自动merge. 只是将远程仓库最新 ...

随机推荐

  1. React报错之Parameter 'event' implicitly has an 'any' type

    正文从这开始~ 总览 当我们不在事件处理函数中为事件声明类型时,会产生"Parameter 'event' implicitly has an 'any' type"错误.为了解决 ...

  2. C# 使用if(DEBUG)调试 失效问题

    在调试winform程序的时候,经常会切换debug和release模式.有些时候在debug模式下不想用的东西就会使用 #if(!DEBUG) #endif 但是这次在新项目的时候,使用这个语句,失 ...

  3. 面试~jvm(JVM内存结构、类加载、双亲委派机制、对象分配,了解垃圾回收)

    一.JVM内存结构 ▷ 谈及内存结构各个部分的数据交互过程:还可以再谈及生命周期.数据共享:是否GC.是否OOM 答:jvm 内存结构包括程序计数器.虚拟机栈.本地方法栈.堆.方法区:它是字节码运行时 ...

  4. KingbaseES如何更改现有表的主键

    更改主键 假设您必须更改现有表的主键.您可以通过执行以下语句来实现此目的: ALTER TABLE tablename DROP CONSTRAINT tablename_pkey , ADD PRI ...

  5. Linux命令之find、grep、echo、tar、whoami、uname

    1. whoami--查看当前登录的用户名 book@100ask:~/linux$ whoami book 2. echo--打印命令,配合'>'或者'>>'使用 echo 打印信 ...

  6. C#,拷贝文件到另一个文件夹下,替换文件夹中的文件

    /// <summary> /// 拷贝文件到另一个文件夹下 /// </summary> /// <param name="sourceName"& ...

  7. DataTable转Json格式

    public static string DataTable2Json(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); ...

  8. 基于koa模块和socket.io模块搭建的node服务器实现通过jwt 验证来渲染列表、私聊、群聊功能

    1. 具体代码在需要的下载 https://gitee.com/zyqwasd/socket 效果: 2. package.json文件 1. 下载基本的模块  修改了start 脚本  nodemo ...

  9. Coprime

    Coprime 前置芝士 莫比乌斯反演 正文 首先,我们来分析题意. 题目中给出 \(n\) 个人,每个人有一个编号 \(k\) ,要求我们从中选出 \(3\) 个人,三人编号分别为 \(k_a\) ...

  10. Solutions:Elastic workplace 搜索:随时随地搜索所有内容 (二)