今天发现前几天的某一个提交因为忽略文件的问题而导致有几个文件没有提交,需要修改一下某个提交,研究一下可以用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. 微信H5单页面滑动的时候如何避免出界,出现头部和底部的黑底?

    ios系统微信浏览器.safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法 ios偶现下拉出现黑底时,界面第一次上拉时拉不动的解决方案: document.querySelector('# ...

  2. MAC中向阿里云服务器上传文件

    打开mac中的终端 使用命令:$scp /local/file user@remote:/file /local/file 是本地文件 后面部分[用户名]@[ip地址:][服务器中的文件目录] not ...

  3. 关于 PHP 程序员技术职业生涯规划

    原文地址:http://rango.swoole.com/archives/570 看到很多 PHP 程序员职业规划的文章,都是直接上来就提 Linux.PHP.MySQL.Nginx.Redis.M ...

  4. linuxC编程介绍

    第一步:写完程序 /first.c/ #include <stdio.h> int main() { printf("hello,welcome to the LinuxC!\n ...

  5. liteos学习文档liteos.github.io

    https://liteos.github.io该主页是华为liteos物联网操作系统的文档,里面有一章是“内核指南”,讲的是rtos的最主要的功能.可以当作liteos的入门了解,如果用rtos的使 ...

  6. [CodeForces950C]Zebras

    Description 题目地址: Codeforces 题意:给你一串只含01的字符串,判断能否将字符串分为k个子序列,使得子序列满足以下条件: 开头和结尾都是0 相邻的2个数是01或者10 如0, ...

  7. Clion 不能杀死进程

    描述 自己使用时发现点了结束按钮后,打开任务管理器,发现刚才运行的程序还在,并没有被杀死. 有时如果一个程序写了死循环,就会出现疯狂占用内存,最后不得不关机重启. 解决方案 这是他的社区有人也有这样的 ...

  8. 30-RoutingMiddleware介绍以及MVC引入

    1-构建路由 public class Startup { // This method gets called by the runtime. Use this method to add serv ...

  9. 25-IHostEnvironment和 IApplicationLifetime介绍

    //类似 global.ashx的application事件的实现1-Startup类中 public void Configure(IApplicationBuilder app, IHosting ...

  10. 24-webhost的配置

    1-新建asp.net core空项目 2-创建setting.json文件 3- 配制Progrom类中CreateWebHostBuilder 4-获取配置的文件 5-显示结果