今天发现前几天的某一个提交因为忽略文件的问题而导致有几个文件没有提交,需要修改一下某个提交,研究一下可以用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. 以为这个时候就完成了,果然还是图样~~此时,你的版本树可能会变得比较奇怪,像下面这样:

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

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

Git 提交修改的更多相关文章

  1. Git 提交修改内容和查看被修改的内容

    我们将仓库里的readme.txt文件修改一下,改成如下内容: Git is a distributed version control systemGit is free software. 运行g ...

  2. git提交时支持文件名大小写的修改

    在windows环境下,git提交文件时,默认对文件名大小写不敏感,若修改了文件名字的大小写,可能会导致提交时没有记录,文件名修改不成功.网上搜集了几种解决方法,现总结下: 1. 修改git conf ...

  3. 6.Git内容修改之后的查看和提交

    我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version c ...

  4. 怎么修改git提交过的内容

    git修改历史提交   Git使用amend选项提供了最后一次commit的反悔.但是对于历史提交呢,就必须使用rebase了. git rebase -i HEAD~3 表示要修改当前版本的倒数第三 ...

  5. GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...

  6. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...

  7. git rebase修改历史提交内容

    目录 简述 解决过程 简述 git提交历史中有一次提交的内容是有问题,因为每隔一段时间就要发一次版本,所以必须修改这次提交的内容,以便其不影响已经发布的版本. 大概是这样子的 A --- B ---- ...

  8. git<git rebase 修改以前提交过的内容>

      git rebase 使用总结: 使用git rebase 修改以前已经提交的内容 比如要修改之前的commit的 hashcode为:187f869c9d54c9297d6b0b1b4ff47d ...

  9. git一键提交修改文件

    git一键提交修改文件 首先安装git, 有git bash: 新建一个gitcmt文件,放置于与你的项目同级的目录里: 使用:打开git bash, 方法1. git pull\git status ...

随机推荐

  1. runit git-daemon-run 等错误

    正在处理用于 man-db (2.7.5-1) 的触发器 ... 正在设置 runit (2.1.2-3ubuntu1) ... start: 无法连接到 Upstart: Failed to con ...

  2. Java日志框架介绍

    一.序言 日志为系统的必不可少的一部分,通过输出的日志我们可以排查线上出现的各种问题,就像断案的线索一样.我们还可以通过日志数据分析用户的行为习惯做大数据分析. 二.日志框架分类及其历史 框架的种类: ...

  3. 精心收集的48个JavaScript代码片段,仅需30秒就可理解

    源文链接 :https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with-duplicates 该项目来自于 G ...

  4. Webpack4 学习笔记三 ES6+语法降级为ES5

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 Webpack 将es6.es7语法降级为es5 需要通过 babel JavaScript编译器. 安装: npm i babel ...

  5. 用struct LNode *L与LinkList &L的区别

    用void InitList(struct LNode *L), 函数InitList中如果改变了L指针本身的值,对其他函数无影响.用void InitList(LinkList &L),函数 ...

  6. Java - 得到项目中properties属性文件中定义的属性值

    public static String getPropertiesValue(String fileName, String key) {   return ResourceBundle.getBu ...

  7. datatable设置动态宽度,超过一定长度出现滚动条

    获得宽度:var tableAutoWidth = $('.dataTable_wrapper').width();if (tableAutoWidth < 1200) { tableAutoW ...

  8. 设置vim tab为4个空格

    Vim 编辑器默认tab为8个空格,但对于pythoner来说,必须要调整到4个空格. 方法如下: 在~/.vimrc文件中加入下面设置: set ts=4 #设置tabstop为4个空格 set e ...

  9. tcl之控制流-条件运算、条件测试、逻辑表达

  10. Java8 新API读取文件内容

    import java.io.IOException;import java.nio.charset.Charset;import java.nio.file.Files;import java.ni ...