Git在已经从master合并的分支上重新建立基础并压缩



我有一个与master并行开发了一段时间的功能分支。在此期间,在直接对master进行了一些更改之后,我将这些更改合并到了我的功能分支中。我还将一些小特性合并到特性分支中,因为小特性在某种程度上是大特性的一部分。

现在我想将我的功能分支合并到master上,但首先我想将功能分支上的一些提交压缩为更少的提交(或单个提交(,因为我有许多类型的"提交";进行中的工作"---WIP";,等等,我不想把主人弄得一团糟。

所以目前我有一个类似的东西

[dev/feature]
|              
Finally done!
|
| 
[dev/smallfeature]          |                             [master]
|                  |                                |
|   Merge branch dev/smallfeature into dev/feature  |
|                 /|                                |
|----------------/ |                                |
|                  |                                | 
|      Merge branch master into dev/feature         |
|                  |                               |
|                  | ------------------------------|
Made the small feature work  |                                |
|                  |                         Fixed some typos
|                  |                                | 
|                  |                                |
|             Work in progress...                   |
|                  |                                |
|      Merge branch master into dev/feature         |
|                  |                               |
|                  | ------------------------------|
|                  |                                |
Experimenting...          |                      Released version 1.2.3
|                  |                                |
|             Working on it...                      |
|                  |                                |
|                  |                                |
|                  |                                |
|                   -------------------------------|
|                                                   |
|                                                   |
|                                            Fixed some colors 
|                                                   |
|                                                   |
--------------------------------------------------|
|

我想最终得到这样的

[master]
|
|
Feature added
|
|
Fixed some typos
|
|
Released version 1.2.3
|
|
Fixed some colors
|
|

我使用的是IntelliJ,当我从Working on it...-commit以交互方式重新基准时,我也可以在对话框中看到直接在master上进行的提交。如果我选择";南瓜";也在上面?它们已经在master上了,所以如果我压缩它们,然后将我的功能分支合并到master上,会发生什么?这可能吗?

为了实现您所描述的结果,您可以简单地进行压缩合并:

git switch master
git merge --squash dev/feature
git commit -m "Feature added"

Git将把dev/feature中的文件与master中的文件合并,并在master上构造一个新的树。由于您已经将master合并到dev/feature中,因此生成的树最终只包含dev/feature中引入的更改。

相关内容

最新更新