我想删除所有提交历史记录但保持代码处于当前状态,因为在我的提交历史记录中,有太多未使用的提交。
我该怎么做?
有没有git命令可以做到这一点?
git filter-branch ?
git rebase ?
...
我的代码托管在github.com上。
答案 0 :(得分:787)
删除.git
文件夹可能会导致git存储库出现问题。如果要删除所有提交历史记录但保持代码处于当前状态,则执行此操作非常安全,如下所示:
结帐
git checkout --orphan latest_branch
添加所有文件
git add -A
提交更改
git commit -am "commit message"
删除分支
git branch -D master
将当前分支重命名为master
git branch -m master
最后,强制更新您的存储库
git push -f origin master
PS:这不会保留旧的提交历史记录
答案 1 :(得分:80)
如果您确定要删除所有提交历史记录,只需删除项目根目录中的.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
文件夹)!