git:如何在合并后修改分支并保持合并提交的更改

时间:2016-11-25 16:56:28

标签: git rebase

我有这样的历史:

A - B - M
 \    /
    C 

A,B和M是主人,C在功能分支上。

我犯了两个错误:

  1. 我没有意识到公司远程在我做之前不接受合并提交。
  2. 除了简单解决冲突之外,我在合并提交中改变了很多东西。
  3. 我想要改变,所以它看起来像A - B - C - M,C - M可能会被挤压在一起。

    我只找到了one question on the internet which actually looked quite similar to my case,唯一的答案是"合并很好"。

    我承认我仍然不是100%熟悉rebase语法,但我告诉git要使用-p和/或-i进行rebase的任何组合,它要么在那里说没有什么可以改变(noop)或说它不起作用。

    似乎合乎逻辑的选择是踩到C和rebase -ip master,但它没有做到我预期的那样。

1 个答案:

答案 0 :(得分:2)

鉴于此历史:

A - B - M
  \    /
    C 

在M,你软复位到B,然后提交,那么你最终会得到A - B - M',这似乎是你想要的:

git checkout M
git reset B
git commit

分支的内容将保持不变,这些命令都不会改变,只有C从历史记录中消除,使其看起来像一个直的分支。