【问题标题】:Clean up old git repo by deleting range of commits通过删除提交范围来清理旧的 git repo
【发布时间】:2018-07-01 17:25:36
【问题描述】:

我开始使用一个旧的非常大的 repo 来开发一个项目,大约是 1.1GB

我已经从原始 repo 完全克隆到另一个 repo 并称之为original-repo

该项目将仅在特定部分上继续,并且所有其他部分都已弃用,因此从初始提交 (7e48a70) 到特定提交 (222b1f3) 的所有提交和分支都是无用的。为了使 repo 干净,我需要删除所有这些提交和除 master 之外的所有分支,并重写工作 repo 的历史记录。

我搜索并阅读了很多主题,使用了很多脚本和命令,安装了一些 Git GUI 应用程序,但无法删除提交和分支以清理并减少 repo 的大小。回购大小仍然是1.1GB

任何帮助将不胜感激。

【问题讨论】:

  • 我刚刚建议在another question 中,您可以完成shallow clone 并继续努力。
  • 您是要实际删除这些提交的内容,还是将它们全部压缩成一个怪物提交?
  • @RyanLundy 我想实际删除提交。就像他们从未存在过一样。我想减小 repo 的大小。
  • @TobiasK 我已经尝试过浅克隆,但是当你浅克隆一个 repo (original-repo) 时,你似乎无法将它推送到另一个 repo。
  • 是的,抱歉,实际上您似乎无法推动它。有道理,因为历史上有一个孤立的提交,抱歉:(如果没有比 222b1f3 更新的提交,你可以rm -rf .git,然后重新初始化,git add . 并提交。

标签: git git-commit git-rewrite-history


【解决方案1】:

如果您想保留提交日志,请尝试

git revert "HEAD^"

否则你可以尝试软/硬重置

git reset --soft "HEAD^"

git reset --hard "HEAD^"

如果有任何混淆,请阅读Difference between soft, mixed and hard reset

您也可以使用

删除远程分支
git push origin --delete <branch_name>

编辑

您可以使用

恢复两次提交之间的更改
git revert commit_id1..commit_id2

【讨论】:

  • 我想删除从初始提交到特定提交的提交,就像它们从未存在一样,以减少 repo 大小。
猜你喜欢
  • 2013-10-16
  • 2018-10-18
  • 2023-02-08
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 2022-07-03
  • 2023-03-21
  • 2021-12-22
相关资源
最近更新 更多