我不知道有什么方法可以完全按照您的要求进行操作(可以回滚到第一次提交,但不能删除 all 历史记录,因为历史记录至少会包含该初始提交。)
如果我是你,我会删除远程仓库和本地仓库的 .git 目录,然后从 git init 重新开始。
我能得到的最接近您要求的方法是回滚除第一次提交之外的所有内容。为此,您首先要找到第一次提交的 SHA1,例如:
% git rev-list --max-parents=0 --abbrev-commit HEAD
aa8119f
...然后运行任一
% git reset aa8119f
...或
% git reset --hard aa8119f
...取决于您是要保留还是放弃自初始提交以来所做的所有更改。 (以上假设您只有一个分支。如果没有,您还必须使用git branch -d <BRANCHNAME> 删除您拥有的任何其他分支。)
最后,你会跑
% git push -f
(我希望你意识到git push -f 在你推送到与他人共享的仓库时是一个禁忌。)
不幸的是,如前所述,这种方法不会删除所有历史记录。
如果这是您经常想要做的事情,我建议您在 git init 之后立即运行类似
% git commit --allow-empty --allow-empty-message -m ''
% git tag -a -m '' ROOT
这将在你的历史根目录放置一个空提交,并用一个名为 ROOT 的标签对其进行标记。然后你可以做类似的事情
% git reset ROOT
或
% git reset --hard ROOT
带你回到第一个空提交。
要了解git reset 的作用,我建议阅读this。