Git 对从 master 合并的分支进行变基和压缩?
Git rebase and squash on branch that has merges from master?
我有一个功能分支,我已经与 master 并行工作了一段时间。在此期间,在直接对 master 进行一些更改后,我将这些更改合并到我的功能分支中。我还将一些小功能合并到功能分支中,因为小功能是大功能的一部分。
现在我想将我的功能分支合并到 master 上,但首先我想将功能分支上的一些提交压缩成更少的提交(或单个提交),因为我有很多类型的“工作progress", "--- 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...
-提交以交互方式变基时,我也可以在对话框中看到直接在 master 上进行的提交。如果我 select 也“压扁”那些东西,我会把事情搞砸吗?它们已经在 master 上了,那么如果我压缩它们然后将我的功能分支合并到 master 上会发生什么?这可能吗?
为了达到您描述的结果,您只需执行 squash merge:
git switch master
git merge --squash dev/feature
git commit -m "Feature added"
Git 会将 dev/feature
中的文件与 master
中的文件合并,并在 master
之上构建一棵新树。由于您已经将 master
合并到 dev/feature
,因此生成的树最终将仅包含 dev/feature
.
中引入的更改
我有一个功能分支,我已经与 master 并行工作了一段时间。在此期间,在直接对 master 进行一些更改后,我将这些更改合并到我的功能分支中。我还将一些小功能合并到功能分支中,因为小功能是大功能的一部分。
现在我想将我的功能分支合并到 master 上,但首先我想将功能分支上的一些提交压缩成更少的提交(或单个提交),因为我有很多类型的“工作progress", "--- 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...
-提交以交互方式变基时,我也可以在对话框中看到直接在 master 上进行的提交。如果我 select 也“压扁”那些东西,我会把事情搞砸吗?它们已经在 master 上了,那么如果我压缩它们然后将我的功能分支合并到 master 上会发生什么?这可能吗?
为了达到您描述的结果,您只需执行 squash merge:
git switch master
git merge --squash dev/feature
git commit -m "Feature added"
Git 会将 dev/feature
中的文件与 master
中的文件合并,并在 master
之上构建一棵新树。由于您已经将 master
合并到 dev/feature
,因此生成的树最终将仅包含 dev/feature
.