如何删除第一个提交并使其直接子进程为root

时间:2017-07-22 01:39:59

标签: git

我从git commit中获得commit-id1,但这是第一次提交,因此它没有父级。有一个commit-id2是它的直系孩子。

这是方案commit-id1 ----> commit-id2 ----> commit-id3 ...

是否有一种安全的方法可以删除commit-id1并使commit-id2成为第一次提交

即,commit-id2 ----> commit-id3 ...

我读到了git rebase -onto,但它需要父母,而且无法弄明白

编辑:提交被推送到服务器,我也想从服务器中删除它

1 个答案:

答案 0 :(得分:1)

你应该做

$ git rebase -i --root

这会启动一个交互式rebase。您的文本编辑器将打开一个包含所有要重新提交的提交的列表以及说明。编辑该文件,以便跳过第一次提交。现在保存文件并关闭文本编辑器。

这将从您的本地历史记录中删除提交。如果您需要更新遥控器,则必须强制推送,就像使用任何本地历史记录修订版一样:

$ git push origin master

origin替换为适当的远程名称,并使用相应的分支名称替换master