463

我想删除所有提交历史记录,但将代码保持在当前状态,因为在我的提交历史记录中,有太多未使用的提交。

我该怎么做?

有没有 git 命令可以做到这一点?

git filter-branch ?
git rebase ?
... 

我的代码托管在 github.com 上。

4

2 回答 2

1510

删除该.git 文件夹可能会导致您的 git 存储库出现问题。如果您想删除所有提交历史记录但将代码保持在其当前状态,则按照以下方式执行此操作非常安全:

  1. 查看

    git checkout --orphan latest_branch

  2. 添加所有文件

    git add -A

  3. 提交更改

    git commit -am "commit message"

  4. 删除分支

    git branch -D main

  5. 将当前分支重命名为 main

    git branch -m main

  6. 最后,强制更新您的存储库

    git push -f origin main

PS:这不会保留您的旧提交历史记录

于 2014-09-23T16:43:02.147 回答
134

如果您确定要删除所有提交历史记录,只需删除.git项目根目录中的目录(注意它是隐藏的)。然后在同一文件夹中初始化一个新的存储库并将其链接到 GitHub 存储库:

git init
git remote add origin git@github.com:user/repo

现在提交您当前版本的代码

git add *
git commit -am 'message'

最后强制更新到 GitHub:

git push -f origin master

.git但是,我建议在采取这些步骤之前备份历史记录(存储库中的文件夹)!

于 2012-12-05T05:14:14.297 回答