Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342848
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 476
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-01 19:08
个人简介

Android/Linux/音频/驱动

文章分类

全部博文(41)

文章存档

2017年(21)

2016年(20)

我的朋友

分类: LINUX

2017-03-13 12:51:10

【正文】

    如果要修改最新的一次commit,我们知道可以使用 git commit --amend 命令。但是如果我们想要修改更早的提交记录,应该怎么做呢?比如我现在按照时间从旧到新,有 Commit1 到 Commit4 总共 4 次提交,其中 Commit4 是最新的一次提交,但是我只想修改 Commit3 的 Commit 信息并提交到远程服务器。关系如下:

      Commit4

      Commit3

      Commit2

      Commit1

    我们可以使用如下命令实现:

    1、执行命令 git  rebase  --interactive  HEAD^^ 以交互模式进行 rebase 操作。当然,我们也可以使用 Commit3 的 commit-id 作为参数,比如 Commit3 的 commit-id 是 a1b2c3 的话,使用命令 git  rebase --interactive  a1b2c3^ 效果是一样的。

    2、上面这条命令会使我们进入到一个可编辑的界面。在编辑区顶部,会列出这次 rebase 操作所涉及的所有 commit 提交记录的摘要,它们每一行默认都是以 pick 开头的。找到你想要修改的那个 commit,将行首的 pick 关键字修改为 edit。然后保存并退出。这么做可以在执行和指定 commit 有关的 rebase 操作时暂停下来让我们对该 commit 的信息进行修改。

    3、执行命令 git  commit  --amend 对上一个步骤指定的 commit 信息进行修改。这一步骤的界面就是填写 commit 信息的界面,更改信息后别忘记保存。(如果你在完成这一步骤后使用 git log 命令查看本地的代码提交记录,会发现看不到 Commit4 的信息。这是因为当前仍处于 rebase 的过程中,是正常现象)

    4、执行 git  rebase  --continue 命令完成剩余的 rebase 操作。

    5、执行 git  log 命令查看我们刚才的修改情况,确认已修改的内容和预期一致。

    6、执行 git  push  xxxx  HEAD^:yyyy 命令将 Commit3 提交到远程服务器。其中 xxxx 和 yyyy 分别是你自己环境所使用的远程仓库名和分支名。当然,和 步骤1 一样,我们也可以使用 commit-id 作为参数实现提交,比如 Commit3 的 commit-id 是 a1b2c3 的话,使用命令 git  push  xxxx  a1b2c3:yyyy 效果是一样的。


【参考资料】

    [1] 

    [2] 《How to push only one commit with Git》


阅读(6370) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~