问题背景 Link to heading

需要清理 Git 仓库的历史提交记录,只保留最新版本,以减小仓库体积。

实现方案 Link to heading

使用 Git 的 orphan 分支功能创建一个全新的无历史记录分支,然后替换原主分支。

具体步骤 Link to heading

1. 确保当前更改已提交 Link to heading

git add .
git commit -m "最新更改"

2. 创建新的无历史分支 Link to heading

git checkout --orphan latest_branch
git add -A
git commit -m "初始化提交"

3. 删除原主分支并重命名新分支 Link to heading

git branch -D main
git branch -m main

4. 清理垃圾对象 Link to heading

git gc --aggressive --prune=all

5. 强制推送到远程仓库 Link to heading

git push -f origin main

注意事项 Link to heading

  1. 此操作不可逆,会永久删除所有历史提交记录
  2. 如果是多人协作的仓库,需要提前通知其他协作者
  3. 其他协作者需要重新克隆仓库或执行以下命令更新:
    git fetch origin
    git reset --hard origin/main
    

原理说明 Link to heading

  • --orphan 创建一个新分支,这个分支不会继承任何历史提交
  • git gc 会清理不再需要的对象,减小仓库体积
  • -f 参数强制推送,覆盖远程仓库的历史记录