相关疑难解决方法(0)

make git pull --rebase保留合并提交

git pull --rebase删除未压缩的合并提交.有没有办法让它保存起来?

说我的历史看起来像 -

A
| \ 
B  H
|  |
C  G
|  |
D  F
| /
E
Run Code Online (Sandbox Code Playgroud)

(A作为合并提交.)

git pull --rebase它成为 -

H
|
G
|
F
|
X
|
B
|
C
|
D
|
E
Run Code Online (Sandbox Code Playgroud)

(X作为git pull --rebase我的历史中插入的新提交.) - A被删除.

我知道你可以使用它git rebase --preserve-merges来保存它们git rebase,但是我没有看到用它来保存它们的方法git pull --rebase.

git version-control

15
推荐指数
3
解决办法
6148
查看次数

如何将多个合并压缩为一个合并?

我有一个看起来像这样的主题分支。(分支主题当前指向'a0a0')

  • a0a0 将分支“Master”合并到主题中
  • b1b1 将分支“Master”合并到主题中
  • c2c2 合并提交“来自主人的东西”到主题中
  • d3d3 将分支“Master”合并到主题中
  • e4e4 将分支“Master”合并到主题中
  • f5f5 将分支“Master”合并到主题中
  • 6666 实际提交
  • [主题分支的大量历史记录]
  • 9999 原始发散点

如何将 a0-f5 变成单个合并提交?

我试过:git rebase -i f5f5打算将它告诉那squash5 个提交,但它只是在 f5f5 和 a0a0 之间的主分支上提供了每个提交。因此,我将除第一个和最后一个之外的所有内容从pick变为squash,但是这太疯狂了,并且将 master 的每个提交重新定位为一个巨大的提交,以代替所有合并,从而失去了它是“合并”的事实。那不是我所期望的!

我可以:

  $ git reset 6666
  $ git merge Master
Run Code Online (Sandbox Code Playgroud)

但这需要我重新做任何合并提交。

那么我如何将这些不同的合并压缩成一个合并提交,知道这是一个合并,并且还保留所有合并冲突的东西?

git merge rebase

2
推荐指数
1
解决办法
580
查看次数

标签 统计

git ×2

merge ×1

rebase ×1

version-control ×1