如何从git历史中清除所有以前的提交?

时间:2015-01-19 14:58:09

标签: git

我最近开始了一个新项目,并且我已经开始做了很多实验。现在有些新人加入了,我想知道从git历史中删除第一个提交,因为它们似乎毫无意义,每个浏览回购的人都会感到困惑。

一个可能的解决方案是从头开始设置一个新的仓库,但我更愿意重写历史。

我需要的是将master上的HEAD提交设置为repo中的第一个也是唯一的提交。

4 个答案:

答案 0 :(得分:1)

如果您想使用git rebase,您可能会被Git - squash entire branch - one line squash command强行插入。

如果您有大量提交的历史记录,git rebease可能需要很长时间。在这种情况下,您可以制作浅层克隆

git clone --depth 1 <REPO_URL>

比做

git commit --amend

以创建包含最新更改的独立提交 而不是强行推动

git push -f

答案 1 :(得分:0)

在本地存储库中压缩所有不需要的提交,然后使用--force选项将它们推送到远程存储库。

答案 2 :(得分:0)

如果您确定自己在做什么,可以在第一次提交时进行交互式改造:

git rebase --interactive --root

并修复每一次提交。 但至少我建议在结束之前检查另一个分支:

git checkout -b rebase

答案 3 :(得分:0)

您可以使用

创建没有任何父提交的新根分支
git checkout --orphan new-master

使用

将存储库状态提交到该新分支
git add .
git commit

并使用

将其推送到服务器
git push --force origin new-master:master

这将使旧历史记录在服务器上无法访问,因此请谨慎使用。