如何删除git中的第一个提交?

Jia*_*ang 136 git commit repository git-commit

我很好奇如何删除git中的第一个提交.

在做出任何事情之前的修改是什么?此修订版是否有名称或标记?

tzi*_*tzi 249

对我来说,最安全的方法是使用update-ref命令:

git update-ref -d HEAD
Run Code Online (Sandbox Code Playgroud)

它将删除命名引用HEAD,因此它将重置(轻柔地,您不会丢失您的工作)您当前分支的所有提交.

如果你想要的是将第一个提交与第二个提交合并,你可以使用rebase命令:

git rebase -i --root
Run Code Online (Sandbox Code Playgroud)

最后一种方法是创建一个孤立分支,一个具有相同内容但没有任何提交历史记录的分支,并在其上提交新内容:

git checkout --orphan <new-branch-name>
Run Code Online (Sandbox Code Playgroud)

  • 太糟糕了,这不是公认的答案.它也太糟糕了,谷歌上的大多数点击或多或少说"你无法撤消第一次提交".这对我有用.谢谢! (6认同)
  • git update-ref -d HEAD 是删除所有历史记录的最安全方法,而不仅仅是初始提交。 (2认同)

Cha*_*esB 40

在第一次提交之前没有任何内容,因为每个提交都引用父提交.这使得第一次提交特殊(孤立提交),因此无法引用先前的"状态".

因此,如果您想要修复提交,您可以简单地git commit --amend:这将修改提交而不创建另一个提交.

如果您只想重新开始,请删除.git存储库,然后再创建另一个存储库git init

  • 这个答案是错误的:有一种方法可以恢复到第一次提交之前的状态.请参阅下面的[tzi的答案](http://stackoverflow.com/a/32765827/46783). (5认同)
  • 如果最初配置错误,`--amend` 也不会正确更新作者。这就是我需要的,所以我使用了接受的答案,然后只是做了一个新的提交。 (2认同)

小智 9

查看临时分支:

git checkout --orphan TEMP_BRANCH

添加所有文件:

git add -A

提交更改:

git commit -am"初始提交"

删除旧分支:

git branch -D master

将临时分支重命名为master:

git branch -m master

最后,强制更新到我们的存储库:

git push -f origin master

  • **不是答案:**问题是“如何删除第一次提交”,而不是“如何删除除最后一次提交以外的所有内容”。 (2认同)
  • 我正在寻找这个。谢谢! (2认同)
  • 这个答案是从[此处](/sf/answers/1820027681/)复制的。 (2认同)

kp1*_*123 7

我正在寻找一种方法来撤消所有来自 repo 的 git 提交,就像它们从未发生过一样。

重新定位将在一定程度上起作用。然而,第一个(按时间顺序最旧的 git 提交)总是会有问题,因为它没有父级,所以会出错。

这些答案都没有为我解决。但是经过大量的搜索和反复试验,我发现这可行!

git update-ref -d HEAD
git push origin master -f
Run Code Online (Sandbox Code Playgroud)

希望这对你有帮助。祝你有美好的一天。

  • **为了让阅读此答案的任何人都清楚:** 这会删除每个提交,但 OP 只想删除对存储库所做的第一个提交;不要运行此命令来删除第一个提交,因为它将删除所有提交。 (3认同)

Max*_*rch 6

您可能只想编辑第一次提交(因为git repo中始终存在第一次提交).考虑使用git commit --amend --reset-author而不是通常git commit --amend.