我有一个与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
中引入的更改。