重基Git合并提交

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

以下列情况为例:

我在一个主题分支中有一些工作,现在我已经准备好合并到主人那里了:

* eb3b733 3     [master] [origin/master]
| * b62cae6 2   [topic]
|/  
* 38abeae 1

我执行来自主的合并,解决冲突,现在我有:

*   8101fe3 Merge branch 'topic'  [master]
|\  
| * b62cae6 2                     [topic]
* | eb3b733 3                     [origin/master]
|/  
* 38abeae 1

现在,合并花了我一段时间,所以我又进行了一次提取,并注意到远程主分支有新的更改:

*   8101fe3 Merge branch 'topic'  [master]
|\  
| * b62cae6 2                     [topic]
| | * e7affba 4                   [origin/master]
| |/  
|/|   
* | eb3b733 3
|/  
* 38abeae 1

如果我尝试从MASTER‘git rebase/master’,我被迫再次解决所有冲突,而且我也会丢失合并提交:

* d4de423 2       [master]
* e7affba 4       [origin/master]
* eb3b733 3
| * b62cae6 2     [topic]
|/  
* 38abeae 1

是否有一种简单的方法来重新建立合并提交的基础,这样我就有了如下所示的历史记录?

*   51984c7 Merge branch 'topic'  [master]
|\  
| * b62cae6 2                     [topic]
* | e7affba 4                     [origin/master]
* | eb3b733 3
|/  
* 38abeae 1
提问于
用户回答回答于

这里有两种选择。

一种是进行交互式重基并编辑合并提交,手动重做合并并继续重基。

另一个是使用-p选项开启git rebase.

用户回答回答于

看起来你想要做的是删除你的第一个合并。可以遵循以下步骤:

git checkout master      # Let's make sure we are on master branch
git reset --hard master~ # Let's get back to master before the merge
git pull                 # or git merge remote/master
git merge topic

那会给你你想要的。

扫码关注云+社区