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. Miller Rabbin 算法—费马定理+二次探测+随机数 (讲解+例题:FZU1649 Prime number or not)

    0.引入 那年,机房里来了个新教练, 口胡鼻祖lhy 第一节课,带我们体验了暴力的神奇, 第二节课,带我们体验了随机数的玄妙, -- 那节课,便是我第一次接触到Miller Rabbin算法, 直到现 ...

  2. CodeForces - 1629C

    Problem - 1629C - Codeforces 题意: 一个序列,每次可以从开头选择一个长度为K的序列,然后得到这个序列的MEX(最小的未出现的数),问最后可以求得的字典大小最大的序列是多少 ...

  3. luogu P1488 肥猫的游戏

    肥猫的游戏 P1488 肥猫的游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 野猫与胖子,合起来简称肥猫,是一个班的同学,他们也都是数学高手,所以经常在一起讨论数学问 ...

  4. 新增 Oracle 兼容函数-V8R6C4B0021

    KingbaseES V8R6C4B0021新增加以下Oracle 兼容函数. 一.bin_to_num Oracle bin_to_num 函数用于将二进制位转换成十进制的数. 1.传入参数 tes ...

  5. KingbaseES 导入导出blob列数据

    KingbaseES兼容了oracle的blob数据类型.通常是用来保存二进制形式的大数据,也可以用来保存其他类型的数据. 下面来验证一下各种数据存储在数据库中形式. 建表 create table ...

  6. ViewBinding 与 Kotlin 委托双剑合璧

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭 ...

  7. 企业运维实践-丢弃手中的 docker build , 使用Kaniko直接在Kubernetes集群或Containerd环境中快速进行构建推送容器镜像

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 首发地址: h ...

  8. 《Java基础——制表符》

    Java基础--制表符       规则: 若前面输出内容不为8的倍数,则通过空格补全. 不足八位,补全八位.   例一:不足八位: System.out.println("123456&q ...

  9. 【gRPC】C++下使用CMakeLists快速构建项目

    在gRPC中,编写.proto文件(protocol buffer文件)来定义RPC服务的接口是第一步 先通过proto的代码生成器编译生成pb.h.pb.cc.grpc.pb.h.grpc.pb.c ...

  10. 使用filebeat过滤掉部分字段

    host,agent,ecs三个字段也是不让drop的 processors: - drop_fields: fields: ["log","input",&q ...