Git 如何删除第一次提交并使其直接子项成为根

Git 如何删除第一次提交并使其直接子项成为根,git,Git,我从git提交中获得了commit-id1,但这是第一次提交,因此它没有父级。有一个commit-id2,它是它的直接子级 这是场景commit-id1-->commit-id2-->commit-id3… 是否有安全的方法删除commit-id1并将commit-id2作为第一次提交 i、 例如,commit-id2-->commit-id3… 我读过关于git rebase-On的文章,但它需要一个父级,而无法理解 编辑:提交被推送到服务器上,我也想从服务器上删除它 $ git rebase

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

这是场景
commit-id1-->commit-id2-->commit-id3…

是否有安全的方法删除
commit-id1
并将
commit-id2
作为第一次提交

i、 例如,
commit-id2-->commit-id3…

我读过关于git rebase-On的文章,但它需要一个父级,而无法理解

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

$ git rebase -i --root
这将启动一个交互式重基。您的文本编辑器将打开一个列表,其中包含所有将被重定基础的提交以及说明。编辑文件,以便跳过第一次提交。现在保存文件并关闭文本编辑器

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

$ git push origin master

用适当的远程名称替换
origin
,用适当的分支名称替换
master

您是否尝试过
--root
?该命令是否类似于
git rebase--root commit-id2
?我没见过这个谢谢你的酒你想要什么?涉及的分支机构的整个历史都必须重写,否则就会出现分歧。如果很多人都在合作,那么发表的分支机构不是个好主意,我不担心,因为我在问题中从未提到过这一点。请让我知道问题是否需要编辑。这是否也会删除服务器上的文件?@knk我猜您的意思是“删除提交”(以及相关内容)。我将更新我的答案以包含这些内容。@Code学徒git-push-f origin mastergit-push origin+master。致命:需要一个revision@AlexeySh. 如果您在尝试使用此处给出的解决方案时遇到问题,您应该发布一个新问题。请确保包括您尝试的确切步骤以及返回此问题的链接。