当我在feature1上工作时,在下面的提交点A上,我被要求在上面构建另一个mod。我们称之为feature1+。这意味着图表如下所示:

master: o---o---o---o---o
             \
feature1:     o---e---e---e---O---A
                                   \
feature1+:                          o---c---c---X

现在我想将feature1+返回到feature1,但是我意识到在XA中存在的文件之间的变化是最小的;在c提交中有两个新的跟踪文件。
一路上,我开始合并feature1上的提交,将e提交重新调整为单个o'提交,以最终减少主服务器上的提交数。我相信有效的图表是这样的:
master: o---o---o---o---o
             \
feature1:     o---o'---O---A
               \
feature1+:      o---e---e---e---O---A---c---c---X

但是,这意味着当我运行时feature1+也会将e提交转储到feature1上:
git checkout feature1
git merge feature1+

这给了我:
master: o---o---o---o---o
             \
feature1:     o---o'---O---A---e---e---e---O---c---c---X

我想添加c提交而不重新引入e提交。换句话说,将其合并回:
master: o---o---o---o---o
             \
feature1:     o---o'---O---A---c---c---X

我该怎么做?我试过在a的checkout中从c创建新文件,但这当然会在不保留其历史记录的情况下提供这些文件。

最佳答案

在分支机构时:feature1在以下位置签出:
执行git cherry-pick feature1+: A .. X操作将生成所需的树

master: o---o---o---o---o
             \
feature1:     o---o'---O---A---c---c---X

08-27 08:53