使用git命令修改指定的commit提交记录并提交到远程服务器的方法

【正文】

    如果要修改最新的一次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] 《How to modify a specified commit in git》

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



  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值