Git:压扁功能分支并合并提交,基于主站

时间:2020-10-24 19:42:14

标签: git

我有以下情况:

M
|
|
o  X
| /| 
|/ |
a  b
| /
|/
o

我签出了b,然后运行了git merge a。在合并提交X中解决了一些冲突。我还在X内做了一些其他更改。

我想挤压Xb,然后将挤压壁垒基于M。 目的是避免重新进行为构建X而进行的更改。

(X+b)
  |
  |
  M
  |
  |
  o
  |
  |
  a
  |
  |
  o

关于如何执行此操作的任何想法?

2 个答案:

答案 0 :(得分:3)

您可以:

# from X :
git reset --soft o    # <- the parent commit of a and b
git commit            # this will create 'b + X'

# then rebase :
git rebase M

重新设定基准时,您可能需要解决其他冲突。


另一种方法可以是:

  • 首先合并MX
  • 然后使用reset --soft + commit创建单个提交
# from commi M :
git merge X
# fix possible merge conflicts

git reset --soft M
git commit    # commit the content of the merge
              # as a single regular commit on top of M

答案 1 :(得分:0)

替代方法:

git checkout M
git merge --squash X
git commit -m "implemented feature X"