git 删除历史记录或历史大文件后 提交历史记录到新的仓库

我这里的情况是原有仓库已经关闭了,就只有手里的项目代码,现在需要将包括带有大文件的历史提交记录 clone到新的仓库中,而且新仓库已有代码和提交记录的情况下。

一个简单快速的方式,使用git filter-repo清理大文件,然后新仓库合并到本地,最后提交

前提:需安装Python 3.10以上版本。使用git-filter-repo脚本 而不是安装,临时用更节省时间。 先将项目备份,使用备份进行以下操作,以避免原始仓库被意外损坏。

1. 从git-filter-repo的GitHub页面下载最新版本的git-filter-repo,它是一个单文件的Python脚本。

直达 git-filter-repo

2. 将git-filter-repo放到某个位置,如D:\tool\git-filter-repo并重名为git-filter-repo.py, 第4步需要用到。

3. 先查找大文件,"tail -20"中的20表示条数,使用Git Bash执行

js 复制代码
git rev-list --objects --all | grep " (git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -20 | awk '{print 1}')"

4. 清理大文件:win+R命令行执行,可查看项目文件夹大小查看是否删除成功

多个文件 就加 --path data/xxx.zip

js 复制代码
 python D:\tool\git-filter-repo\git-filter-repo.py --force --path path/第3步得到的文件路径.zip --path data/xxx2.zip --invert-paths

5. 查看新的远程仓库是否还在

js 复制代码
 git remote -v

6. 如果没有进行添加 或修改

js 复制代码
   #添加
   git remote add origin master(你远程的分支)
   
   # 修改
   git remote set-url <远程名称> <新远程仓库URL>

7. 拉取远程代码并允许合并无关历史

js 复制代码
 git pull origin master --allow-unrelated-histories

8. 解决可能的冲突(如有)

js 复制代码
输入合并信息 "Merge unrelated histories"

9. 查看历史记录,是否包含想要提交的历史记录,git Bash here执行,按q退出

js 复制代码
  git log -50

10. 推送历史记录并设置跟踪关系

js 复制代码
  git push --set-upstream origin master

此时已大功告成!你可以去你的git History 中查看是否提交了历史记录。

相关推荐
南棱笑笑生4 小时前
20260429给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Android14时删除全部的.git目录
git·rockchip
tsyjjOvO5 小时前
【Git 从入门到实战】(IDEA+Gitee 版)
git·gitee·idea
你知道“铁甲小宝”吗丶6 小时前
git推送到多平台(gitee/github)
git·gitee·github
bksczm7 小时前
Linux之基础开发工具之git
git
GUET_一路向前7 小时前
【git工作常用指令】
大数据·git·elasticsearch
handler017 小时前
Git 核心指令速查
linux·c语言·c++·笔记·git·学习
二宝哥8 小时前
大数据之yum安装git
git
牛奶咖啡138 小时前
Git实践——git远程仓库操作
git·git远程仓库的创建·github创建仓库·git将本地仓库推送到远程仓库·使用git克隆远程仓库到本地·git分支的创建与合并·git冲突的产生与解决
随风,奔跑9 小时前
Git学习笔记
笔记·git·学习
Gary Studio11 小时前
Git vscode 插件推荐
ide·git·vscode