how to delete all commit history in github?
我想删除所有提交历史记录,但将代码保持在当前状态,因为在我的提交历史记录中,有太多未使用的提交。
我该怎么做?
有什么git命令可以做到吗?
1 2 3
| git filter-branch ?
git rebase ?
... |
我的代码托管在github.com上。
删除.git文件夹可能会导致Git存储库出现问题。如果您希望删除所有提交历史记录,但将代码保持在其当前状态,则可以按以下方式进行操作:
结账
埃多克斯1〔3〕
添加所有文件
江户十一〔四〕号
提交更改
埃多克斯1〔5〕
删除分支
埃多克斯1〔6〕
将当前分支重命名为master
江户十一〔七〕号
最后,强制更新存储库
埃多克斯1〔8〕
附言:这不会保留你以前的提交历史。
- 在这之后,我可以用一个分叉的存储库拉请求吗?
- 真是太棒了。(0)。克隆:git clone https://github.com/blahblah/blahblah。
- @不,你不能,它会说:没什么可比的,master和x分支有完全不同的提交历史。强制推时,Github上的拉请求自动关闭
- 这会删除我的计算机上的本地提交历史记录还是github.com中的历史记录?
- @vick it删除所有提交历史:本地和服务器上(github.com)
- 作为一个好的管家,在这些命令之后,一个好的:git gc——侵略性的——prune=all可能是一个好主意。对于删除存储库也是如此。
- 当然,它似乎应该工作,但是当我(在sourceforge上)尝试它时,我得到了这个错误消息:remote: error: denying non-fast-forward refs/heads/master (you should pull first)。
- 我有一个170MB的存储库,做了这个,现在它是180MB,我如何解决它?
- 本地和BitBucket上仍然存在历史,可能是因为项目来自另一个项目。
- 为什么是add -A?当我执行checkout --orphan时,所有的文件都已经进行了分级;难道add -A不可能添加那些应该保持未跟踪的文件吗?
- 这将只从主分支删除提交
- @nonameprovided-f参数强制将提交作为新的主控形状。也就是说,-f是一个非常有力的论点。99.9%的时间使用它是一个坏主意,但是如果您真的想用分支的内容和历史替换master和它的提交历史,那么就使用它。但要意识到,如果没有正确地考虑到这一点,它可能会以一种非常糟糕(不可恢复)的方式变成梨形!我建议把原件的本地副本放在一台单独的机器里作为保护措施。在你考虑这个之前
- 一个好的解决方案!
- 它就像一个魅力
- 这是我能找到的唯一实际有效的解决方案,即删除所有提交历史记录,而无需删除repo并重新启动。铌。我用Bitback做遥控器。
- 如果我想有效地减少旧的承诺呢?说前六个月值多少钱?
- 很好的解决方案。
- 我不能执行最后一步。我收到这个错误消息:不允许您强制将代码推送到这个项目的受保护分支。
- 我要注意的是,如果黑客获得了github页面的URL(/blob/">github.com//blob/)。此方法不会删除该URL链接。只有完全删除和重新创建回购协议。
如果您确定要删除所有提交历史记录,只需删除项目根目录中的.git目录(注意它是隐藏的)。然后初始化同一文件夹中的新存储库并将其链接到Github存储库:
现在提交当前版本的代码
1 2
| git add *
git commit -am 'message' |
号
最后强制更新到github:
1
| git push -f origin master |
但是,我建议在执行这些步骤之前备份历史记录(存储库中的.git文件夹)!
- 但如果我只想保持最近10次的承诺?
- 在这之后,我可以用一个分叉的存储库拉请求吗?
- 这是可行的,但它将使历史与之前在树上的承诺保持一致,就像@desta haileselassie hagos所说的那样。
- @朱利奥马林斯:我刚试过这个,然后被推到了吉特胡伯。没有保留任何历史记录-只有一个提交。
- @Dandascalescu在新推的主分支中只存在一个提交,这是非常误导性的-历史仍然存在,它只是无法从该分支访问。例如,如果您有指向较旧提交的标记,则可以访问这些提交。事实上,对于任何一个有点GitFoo的人,我确信在这个git push之后,他们仍然能够从GitHub存储库中恢复所有的历史-如果你有其他的分支或标签,那么他们甚至不需要太多的GitFoo。
- 投反对票。我不想删除所有内容,只需提交即可。我想保持上游设置等。
- @汤姆&225;?Zato你在说.git/config的上游设置吗?如果是这样,请先保存.git/config,然后再恢复。
- 这对我不起作用(也没有其他解决方案)