Android/Linux/音频/驱动
全部博文(41)
分类: 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》