如何在原始分支中压缩提交后进行重组?

时间:2016-03-09 20:29:06

标签: git rebase git-rebase

我有

A--B--C master
       \
        D branch0

然后我将BC压入B'。 如何重新定义branch0,使其看起来像这样:

A--B' master
    \
     D branch0

2 个答案:

答案 0 :(得分:12)

使用<table id="holdingsDistributionTable" class="table table-responsive"> <tr> <th colspan="2">Currency</th> <th>Value</th> </tr> <tr> <td> <div class="currencyHolder greenCurrencyHolder"> <div class="currency greenCurrency"> AED </div> </div> </td> <td> <div style="text-align: center"> UA Emirates Dirham </div> </td> <td> <b>345</b> </td> </tr> <tr> <td> <div class="currencyHolder blueCurrencyHolder"> <div class="currency blueCurrency"> ARS </div> </div> </td> <td> <div style="text-align: center"> Argentine Peso </div> </td> <td>45345</td> </tr> </table>参数进行git rebase,这会改变git重放工作的基线。

--onto

在此状态下,您仍应在git历史记录中看到 C

git checkout branch0

这转换为:自提交 C (在您的情况下仅 D )后,在我当前分支中接受所有提交并重播顶部 B&#39;

您还可以使用可选的git rebase --onto B' C 参数同时执行checkout和rebase:

<branch>

答案 1 :(得分:0)

我能想到的一个简单方法是,

git checkout branch0

通过git log

记下D提交的sha

git checkout master

现在将branch0重命名为branch1

git branch -m branch0 branch1

A--B' master \ D branch1

现在删除branch1

git branch -D branch1

再次创建branch0,如下所示。 git checkout -b branch0

A--B' - master&branch0 以上命令master和branch0相同后。只有我们需要在branch0中进行更改才能获得提交D。

git cherry-pick D

现在branch0看起来如下

A--B' master \ D branch0