浅谈git rebase命令

如果你只想修改git log命令打印到终端上的最后一个提交信息,那么使用git commit --amend命令直接修改就好。

如果你还想合并最近的某几个提交为一个提交,并重新为这个化多为一的新的提交信息的话,那么就要考虑使用git rebase -i HEAD~n命令,注意其中n是一个具体的数字,即你一共想合并的提交的个数。

例如如果n3,则你会得到这样一个界面

根据下面的提示,修改上面那三个pick,注意如果是squash的话,第一个pick是不可以被修改为sqush的,因为第一个指的是,剩下两个提交是要合并到第一个提交里的,把第一pick也改为squash的话,那么git就不知道该把这三个往哪合并了。
注意上面这个界面只是用来让你修改pick的,其他的东西不需要动。

pick,指啥也不变(我的理解)
reword,指不合并,但是可以直接修改后面的提交信息,这里的直接修改不是在这个界面修改,这个界面只用来让你修改pick的,其他的不要动。将第三行的pick修改为reword之后,保存并退出,git会直接创建一个vim会话窗口,此时你就可以修改提交信息了。

这里直接修改第一行的提交信息就行,其他的也不用动,然后保存并推出就完成了reword的功能。
edit,这个命令看似跟reword差不多,但是不能随便用,因为如果你把第二行的pick改为edit,那么这里的意思就是丢弃第三行的提交,直接修改第二行的提交信息,保存并退出后,需要手动使用git commit --amend去把修改窗口调用出来,然后才能修改提交信息;如果你后悔了,那么可以使用git rebase --abort放弃本次修改。这里的git rebase --continue的意思是,如果你不使用git commit --amend修改提交信息,也不用git rebase --abort放弃本次操作,那就默认不修改提交信息并完成本次操作。

所以这个命令有一定危险性,没想清楚不要随便用。


squash,指的是将当前提交合并至上一个提交,注意因为是合并至上一个提交(范围在出现在这个界面的),所以第一行是没有上一个提交的,所以无法将第一行的pick改为squash。修改完pick后就可以保存并退出,git会自动弹出修改提交信息的窗口,把本来的多个提交信息修改为一个就可以了。(可以同时修改多个picksquash,除了第一个pick不能被修改以外,都可以修改为squash

fixupfixup是仅仅丢弃提交记录,但是该次提交的已修改的文件不会变动,这个适用于合并两个分支时,两个分支都有变动,那么在合并的时候git会自动创建一个提交记录,记录本次合并。如果没什么冲突,为了简洁,可以把这个自动创建的提交记录丢弃掉。

drop, 顾名思义,丢弃,不仅丢弃提价记录还丢弃添加或者文件内被修改的内容。

注意,倘若你已经git push到上游了,那就不要修改提交记录了,会造成混乱。这只适用于本地修改完,但还未push的时候。

浅谈git rebase命令 -- git修改历史提交信息相关推荐

  1. 基于Git rebase修改历史提交信息

    说明 关于为什么要修改历史提交的作者信息和提交信息,我就不多说了,也许是项目规范要求,也许是自己强迫症,总之是有这样的需求. 开始之前先说明一下: 本文介绍的方法只适用于本地仓库,提交到远程以后,我没 ...

  2. git 修改历史提交信息

    当你不小心,写错了提交的注视/信息,该如何处理呢.理论上,SCM是不应该修改历史的信息的,提交的注释也是.    不过在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息 ...

  3. Git系列之修改历史提交信息

    文章の目录 1.查看 git 提交记录 2.修改最近两个或者两次上的commit信息 3.扩展:修改上一次git commit 提交的信息 参考 写在最后 1.查看 git 提交记录 git log ...

  4. 【Git学习】使用git reflog 命令来查看历史提交记录并使用提交记录恢复已经被删除掉的分支

    一.问题描述 昨天下午有个同事急急忙忙跑我座位上,要我帮忙,说他刚刚因为手误,将他本地的某个project的某个branch分支删除了,并且也将Gitlab上面的远程分支也删除了.他本来是想发起mer ...

  5. git历史提交信息和提交时间修改

    git历史提交信息和提交时间修改 修改历史提交信息 修改历史提交时间 修改历史提交信息 执行:git rebase -i HEAD~10,这里的含义是修改最近10条数据 执行后会进入到修改界面,将要修 ...

  6. 浅谈git rebase和git checkout --ours(theirs)

    先描述下场景. A在master基础上创建了个新的branch fix_bug, 并在fix_bug上进行了1次对foo.py的修改并提交78d4c5. B在master上直接进行了1次对foo.py ...

  7. git rebase命令(转)

    转自: https://www.yiibai.com/git/git_rebase.html git rebase命令在另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支. 使用语法 gi ...

  8. git rebase 命令 常用_git命令之 git rebase 常用

    git rebase 命令的功能很强大, 在<git 权威指南>一书里,改变提交(commit)的顺序,书中教了一种很复杂的方法,运用了git reset ... git cherry-p ...

  9. Git rebase 命令行操作

    Git rebase 命令行操作 1.创建新分支(在需要进行rebase的分支上开辟新分支) git checkout -b rebase 2.进行rebase操作(master作为变基的节点,也可以 ...

最新文章

  1. Windows 2003 服务器播放FLV的问题解决
  2. C++和C#实现剪切板数据交互
  3. 关于MonoBehaviour的单例通用规则
  4. step5 . day5 网络编程 基于UDP协议的多人网络在线聊天功能
  5. 12123选牌漏洞_12123选牌漏洞是什么?新车牌号自编自选技巧
  6. Android之获取到音视频的时长后按格式(00:00或者00:00:00)显示
  7. 编写基于事件的CQRS读取模型
  8. MATLAB中的for循环
  9. linux先cd到mysql的运行路径下,Linux常用的服务器运维命令
  10. 华为云计算HCNA--存储虚拟化
  11. idea断点的几个意思_你真的理解Intellij IDEA的Debug技巧吗?这篇文章全部教给你...
  12. day6Linux命令-设置别名
  13. 雷达最大不模糊速度_雷达基础知识:案例计算
  14. centos服务器修改密码,linux centos默认的密码
  15. 人脸关键点检测face_landmark
  16. Java项目的项目流程(快速了解)
  17. AUTOSAR Network Wakeup(Can) Configuration
  18. Python 解多元高次方程
  19. 2021-10-18记录 MediaTek MT7620A 平台对应的类型
  20. 每位开发人员都应铭记的10句编程谚语

热门文章

  1. 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings
  2. caxa电子图板2022软件
  3. 美国麦当劳“四川辣酱”将再次回归;“澳大利亚制造”巧克力要崛起;中国食品行业首个“零碳工厂”诞生 | 食品饮料新品...
  4. 使用tensorflow和Keras的初级教程
  5. 我的微信公众平台开通啦!
  6. 亵渎小说介绍_亵渎行不通
  7. 当你在Mac下载东西的时候,有时候因为网络或者其他问题中断了,双击重新下载会提示你“您所请求的资源没有权限”?
  8. 图像控制点 形变_基于控制点的图像变形方法的研究与实现
  9. 优秀的管理者都需要做好这四点
  10. DaisyDisk for mac(磁盘清理软件)中文版