git删除合并点之间的分支上的所有提交

git删除合并点之间的分支上的所有提交,git,atlassian-sourcetree,Git,Atlassian Sourcetree,这是一张我的情况图,点代表提交(这实际上来自SourceTree;我将其侧移以便于查看,时间从左向右流动): 这是由于一个错误造成的(由一个创建了一个额外分支的交互式重基引起的,我不知道为什么)。我想删除端点之间的上一行中的所有蓝点(提交),只留下左端点、下一行(红点)和右端点。我可以吗?没有按下任何按钮(没有遥控器);我只是想清理一下我的历史记录。你所要做的就是修复右侧的最终蓝色提交。它有两个父级,一个蓝色和一个红色提交,您希望它只有一个红色的父级。如果编辑提交并删除蓝色父项,整个蓝色提交行

这是一张我的情况图,点代表提交(这实际上来自SourceTree;我将其侧移以便于查看,时间从左向右流动):


这是由于一个错误造成的(由一个创建了一个额外分支的交互式重基引起的,我不知道为什么)。我想删除端点之间的上一行中的所有蓝点(提交),只留下左端点、下一行(红点)和右端点。我可以吗?没有按下任何按钮(没有遥控器);我只是想清理一下我的历史记录。

你所要做的就是修复右侧的最终蓝色提交。它有两个父级,一个蓝色和一个红色提交,您希望它只有一个红色的父级。如果编辑提交并删除蓝色父项,整个蓝色提交行将从提交历史记录中消失,因为不会有将它们列为祖先的提交


请参见:

保存当前提交的SHA哈希(或在事实发生后检查
reflog
)。通过将头/分支重置为提交散列,您始终可以撤消所做的任何损坏。最糟糕的情况是,如果你在做一些复杂的编辑/重设基础/过滤时破坏了一切,你只需返回散列就可以了。好吧,我不得不承认,它工作得很好。:)