git rebase -i

软件开发混乱。 如此多的错误转弯,拼写错误得到纠正,快速的hack和错误纠正可以在以后发现的过程中发现一次又一次的错误。 使用版本控制,您可以清晰地记录在创建“完美”最终产品(准备好向上游提交的补丁)的过程中进行的每一次错误操作和更正的原始记录。 就像电影的票房一样,它们有些尴尬,有时还很有趣。

如果可以使用版本控制定期将您的工作保存在航路点,然后准备好要提交以供审阅的东西,则可以隐藏所有这些私人起草工作,而只需提交一份完整的补丁? 认识git rebase -i ,这是重写历史记录的完美方法,使每个人都认为您是第一次生成完美的代码!

git rebase做什么?

如果您不熟悉Git的复杂性,这里是简要概述。 在幕后,Git将项目的不同版本与唯一标识符相关联,该唯一标识符由父节点唯一标识符的散列以及新版本与其父节点之间的差异组成。 这会创建一棵修订树,每个签出项目的人都会得到自己的副本。 不同的人可以在不同的方向进行项目,每个方向都可能从不同的分支点开始。

左侧“原始”存储库中的master分支,右侧是您的个人副本上的private分支。

git merge ,另一个是使用git rebase 。 它们以不同的方式工作。

当您使用git merge时 ,将在master分支上创建一个新提交,其中包括来自原始位置的所有更改以及所有本地更改。 如果存在任何冲突(例如,如果其他人更改了您也在使用的文件),则将标记这些冲突,并且您有机会在将该合并提交提交到本地存储库之前解决冲突。 当您将更改推回父存储库时,所有本地工作将显示为Git存储库其他用户的分支。

但是git rebase的工作方式有所不同。 它回滚您的提交,并从master分支的顶端再次重放这些提交。 这导致两个主要变化。 首先,由于您的提交现在正在分支到另一个父节点,因此将重新计算其哈希值,并且克隆您的存储库的任何人现在都可能拥有该存储库的损坏副本。 其次,您没有合并提交,因此在将更改重播到master分支上时会识别出任何合并冲突,因此您需要先进行修复,然后再进行基础调整。 现在,当您进行更改时,您的工作不会出现在分支上,并且看起来您是从对主分支的最新提交中写入所有更改的。

合并提交(左)保留历史记录,而合并(右)则重写历史记录。

但是,这两个选项都有缺点:在准备共享代码之前,每个人都可以在本地解决问题时看到所有涂鸦和编辑内容。 这是git rebase--interactive (或简称-i )标志出现在图片中的地方。

引入git rebase -i

git rebase的最大优点是它可以重写历史记录。 但是,为什么只假装您后来分支了呢? 有一种更进一步的方法可以重写您如何准备就绪的代码: git rebase -i ,交互式git rebase

此功能是Git中的“魔术时光机”功能。 该标志允许您在进行基础更改时对修订历史进行复杂的更改。 您可以隐藏自己的错误! 将许多小的更改合并到一个原始功能补丁中! 重新排列版本历史记录中的内容!

当您运行git rebase -i时 ,您将获得一个编辑器会话,其中列出了所有正在被重新构建的提交以及可以对其执行的操作的多个选项。 默认选择是pick

  • Pick会在您的历史记录中保留提交。
  • Reword允许您更改提交消息,也许可以解决错字或添加其他注释。
  • 编辑允许您在重播分支的过程中对提交进行更改。
  • Squash将多个提交合并为一个。
  • 您可以通过在文件中移动来重新排列提交。

完成后,只需保存最终结果,即可执行重新设置基准。 在您选择修改提交的每个阶段(使用rewordeditsquash或发生冲突时),变基都会停止并允许您在继续之前进行适当的更改。

上面的示例导致“单一代码错误修复”和“在各处集成新标头”被合并为一个提交,而“文档网站的新标头”和“ D'oh-错字。已固定”被合并为另一个提交。 就像魔术一样,进入其他提交的工作仍在您的分支上,但是相关的提交已从您的历史中消失了!

这使得使用git send-email或通过使用新整理的补丁集针对父存储库创建拉请求轻松地向上游项目提交干净补丁。 这具有许多优点,包括使您的代码更易于查看,更易于接受和更易于合并。

翻译自: https://opensource.com/article/20/4/git-rebase-i

git rebase -i

git rebase -i_git rebase -i改变生活的魔力相关推荐

  1. Git使用中关于rebase 、stash 、reflog、reset的一些注意点

    Git使用中关于rebase .stash .reflog.reset的一些注意点 本文不会介绍 Git 的基本操作,会对一些高级操作进行说明. rebase 合并 该命令可以让和 merge 命令得 ...

  2. ​同样更新分支,git merge 和 rebase 有什么区别?

    最近在给 kubernetes 提交代码,k8s 社区要求非常严格,既要分支保持与主干的代码同步,还要一次只能有一条 commit.过程中我错误地使用了一把 git merge 和 git rebas ...

  3. Git命令: rebase 和 squash命令

    rebase的用法 普通合并代码容易产生merge提交 如: 把主干代码合到个人开发分支(有可能会产生一次merge提交) 当前分支:master_zhang3 执行:git merge master ...

  4. git config pull.rebase false是做什么的

    问: git config pull.rebase false是做什么的 回答: git config pull.rebase false 的作用是设置 Git 在执行 git pull 命令时默认使 ...

  5. 一文带你读懂Git中的rebase与fast-forward

    在项目开发的过程中,git作为版本管理工具重要性不言而喻.平常大家肯定会使用merge命令来合并分支.然而merge来合并分支有个缺点,就是当分支太多,合并太多,那么提交记录的图谱看起来就非常丑. 以 ...

  6. Python改变生活 | OCR识别的花样使用

    这是Python改变生活系列的第四篇,在上文Python改变生活 | 轻松识别数百个快递单号_中讲了一个需求的解决办法,即用python识别条形码来获取快递单号. 该问题我一共想了两个方案,所以今天接 ...

  7. Python改变生活 | 轻松识别数百个快递单号

    今天是Python改变生活系列的第一篇,也是一个与你们有关的问题案例 前情提要 了解我的小伙伴可能都知道,小五经常给大家送书.最近一年,不算联合抽奖送书,单独我自购+出版社赞助已送出1000本书籍. ...

  8. 物联网改变生活——飞思卡尔技术论坛中国站侧记

    近日,飞思卡尔技术论坛(FTF)中国站在深圳举行.飞思卡尔总裁兼首席执行官Gregg Lowe亲临论坛,布道物联网.论坛提供了超过110个小时的技术培训课程,涵盖汽车.消费电子.医疗保健.工业.网络. ...

  9. 谁说IT男没有审美?怀揣5000元巨款,我们这样改变生活

    导读:#2000元爆改出租房 #单间租房改造记录了解一下 #不换家具也能完成的ins风租房改造-- 豆瓣上线了一系列与住房相关的话题,这届青年对于"心安之处便是家"这句话有了新理解 ...

最新文章

  1. linux ssh权限漏洞,OpenSSH do_setup_env函数权限提升漏洞(CVE-2015-8325)
  2. JSP项目目录中每个文件夹及配置文件的作用
  3. java int byte数组_Java 中int与byte数组转换详解
  4. 利用opencv中的类FileStorage生成和读取XML和YAML文件
  5. golang的错误汇总
  6. Abstract Factory抽象工厂模式
  7. 【Python】七段数码管绘制日期年月日
  8. codeforces 850 A
  9. Java 128陷阱+自动装箱拆箱
  10. 异步并发利器:实际项目中使用CompletionService提升系统性能的一次实践
  11. html5 中英文语言切换,使用 vue-i18n 切换中英文效果
  12. 糖豆推荐系统第一期开发与评估报告
  13. 原创|批处理实现安卓手机一键快速截屏
  14. 英语作文 计算机新技术对生活的影响,科技的影响高中英语作文3篇
  15. 虚拟机安装win7出现错误
  16. Manjaro 配置指南
  17. idea设置java运行内存,IntelliJ IDEA 修改内存大小,使得idea运行更流畅(二)
  18. 医咖会SPSS免费教程学习笔记—R*C卡方检验
  19. 生成微信小程序二维码,可跳转到小程序指定页面。
  20. 小米全色激光影院对比当贝X3激光投影仪哪个更好

热门文章

  1. 这些年,被“颠覆性创新”的五大行业
  2. 调谐质量阻尼器matlab,调谐质量阻尼器的组成及工作原理
  3. Centos 进入recovery模式,单用户模式
  4. 全球及中国地球物理处理和成像行业研究及十四五规划分析报告
  5. 谷歌中国人才流失 遭猎头公司不断挖角
  6. 浅谈spring之IoC控制反转
  7. 怎么把图片存在mysql_如何把图片存储在mysql中
  8. 员工到管理者的四点转变|智测优测总结
  9. 《自己动手写框架8》:高屋建瓴,理念先行
  10. 【Tree-easy】589. N-ary Tree Preorder Traversal 前序遍历N叉树