今天发现前几天的某一个提交因为忽略文件的问题而导致有几个文件没有提交,需要修改一下某个提交,研究一下可以用rebase命令来完成,执行过程模拟如下:

1. 环境搭建,版本库如下:

文件目录如下:

假设'test3.txt'那个提交缺了个test4.txt文件没有上传,而且提交信息有问题,下面开始修改

2. 首先要将当前分支变基到想要修改的那个提交的父提交上,在这里是e29413e提交的父提交2101e49,也可以用HEAD~3来表示,但是这里出了点问题,因为当前目录中由没有暂存的修改,所以显示了如下界面:

根据提示,先缓存当前工作目录中的变更:

然后再执行变基命令:

$ git rebase -i HEAD~3

其中-i参数表示交互模式来执行变基命令,然后便会弹出交互界面:

3. 如上图所示的变基任务列表,#号开头的行是注释,显示了要如何修改从选定的这个提交到最新提交的所有提交,具体命令如下:

p, pick,使用提交命令,等于commit

r,reword,使用提交命令并修改提交信息

e,edit,使用提交命令但停止变基命令来修改提交(我用到的就是这个命令)

s,squash,使用提交命令但是与上一个提交合并

f,fixup,和squash命令一样,但是丢弃本次提交的日志信息

x,exec,使用shell执行命令(本行命令后的部分都是要再shell里执行的命令)

d,drop,删除这个提交

这里我们要编辑提交e29413e,使用edit命令,将第一行的pick命令改成edit,如下:

然后保存关闭即可开始变基任务,显示如下:

4. 可以看到变基任务停止在了e29413e提交,此时我们可以进行提交的修改操作,添加缺失的test4.txt文件

然后执行命令git commit --amend完成提交修改,然后会弹出交互页面编辑提交信息,如下:

编辑后保存关闭即可完成修改

5. 然后继续执行下面的变基任务即可,如下:

这时便可以看到修改提交已经完成了,如下:

6. 以为这个时候就完成了,果然还是图样~~此时,你的版本树可能会变得比较奇怪,像下面这样:

不要着急,这是因为我们最初的时候将修改存在缓存区的缘故,将缓存区内容还原即可:

此时再看版本树,便于原来的无二了

最新文章

  1. MongoDB学习笔记~MongoDB实体中的值对象
  2. sql server 权限体系
  3. OFFSET IN 使用举例
  4. MMTx使用说明
  5. Linux编程之《看门狗进程》
  6. 史上最全!信息安全入门指南<转>
  7. SIGGRAPH
  8. JQuery判断子Iframe 加载完成的技术解决
  9. BZOJ 1015 星球大战
  10. matplotlib等高线图-【老鱼学matplotlib】
  11. Linux之hosts文件
  12. Spring Boot如何使用Runner实现启动时调用?用法和原理都在这里
  13. Why does deep learning work?
  14. Canvas名侦探柯南-canvas练习
  15. Shell 数组定义与获取
  16. Starting with neural network in matlab[zz]
  17. 关于 ASP.NET 中的 Bundle 的补充说明(草稿)
  18. linux下踢出已登录用户
  19. django环境搭建和学习
  20. Raspberry Pi开发之旅-同步时间

热门文章

  1. ubuntu安装jdk6
  2. JDBC-Hibernate-Mybatis
  3. 虚拟dom和真实dom的转化和class解析的顺序
  4. docker官方仓库下载镜像
  5. ethereum(以太坊)(十一)--字节数组(二)
  6. Linux中的代码编辑器vim
  7. python__系统 : 异步实现以及GIL
  8. tcl之文件操作-文件名相关
  9. PHP脚本执行效率性能检测之WebGrind的使用
  10. 蓝桥杯-历届试题 剪格子(dfs)