2

我有一个看起来像这样的特殊提交日志,

A --> B --> C --> D

其中每个字母都是一个提交。看起来 C 是 B 的还原,所以基本上历史将与

A --> D

有没有办法“总结” B 和 C 的提交?更改尚未推送。

4

3 回答 3

3

您可以在 TODO 列表中执行git rebase -i HEAD~3和删除表示BC提交的行并执行变基。

于 2012-10-29T23:58:57.190 回答
1

除了交互式变基之外,一个简单的方法是:

git reset --hard A     # reset current branch to A
git cherry-pick D      # transplant commit D here

还有一个更通用的命令,当 CD 是整个提交范围时,它会更好地工作:

git rebase --onto A C  # transplant C..D onto A
于 2012-10-30T13:24:59.723 回答
0

最简单的方法是使用重置:

git reset --soft HEAD^^^
git add -A
git commit -C HEAD@{1}

第一个命令使 A 成为当前提交,同时保持工作树就像它在 D 中一样。我们使用下一个命令暂存工作树的状态。接下来,我们使用来自提交 D 的消息进行提交(其中 HEAD 是 1 次之前)。

于 2012-10-30T04:15:35.440 回答