【问题标题】:Git: how to melt a commit to another commit? [duplicate]Git:如何将一个提交融合到另一个提交? [复制]
【发布时间】:2015-08-06 04:49:24
【问题描述】:

假设我有这样的 git 提交历史(新 -> 旧):

C -> B -> A

在 C 提交之后,我开始意识到 A 有问题。也许一个测试用例应该在那个提交中,但实际上它并不存在。那么我该如何处理这种情况呢?进行新的提交并将其融合到 A?how?

问题解决了:

  1. git checkout A
  2. git checkout -b fix
  3. 编辑
  4. git add files
  5. git commit --amend
  6. git rebase fix master

【问题讨论】:

  • 您可以从 A 分支,进行提交,然后在其之上重新定义 B+C。
  • 创建一个新的提交 D 来修复新分支中 A 内部的问题。然后做git rebase --interactive。这将允许您重新排序您所做的提交(对其进行排序,使其为 C->B->D->A)。小心:这是重写提交历史,如果其他人已经拉了你的分支,你会遇到问题

标签: git


【解决方案1】:

很多人会告诉你做rebase --interactive(这可能是解决方案),但如果你打算更改提交 B 或 C 中已更改的某些行,那将是一个地狱使用。

另一种解决方案可能是:

  1. 在提交 A 时创建并签出分支
  2. 修改提交 A 或创建一个新提交(取决于你对你想做的事情的意义)
  3. 签出仍处于提交 C 中的上一个分支
  4. 使用rebase --onto 仅在新创建的分支上重新提交 B 和 C(您可以在之后删除)

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 2017-02-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2015-01-05
    • 2012-09-13
    • 2016-03-23
    相关资源
    最近更新 更多