背景:作者提交代码是都是使用命令窗口将本地的代码全部提交,接着本地存放了视频,导致提交代码时候出了问题,git实际上不允许你单个文件超过100M
1.查看提交历史,找到「干净的提交 ID」
首先执行命令,查看简洁的提交记录,找到添加视频文件之前的那个提交(也就是没有大文件的提交):
git log --oneline 执行后会输出类似这样的内容: a223cf9 (HEAD -> master) 落地页已完成 9c0e741 落地页 fe42f42 (origin/master) 最终版 36afb71 样式初始化,手机出现样式没有初始化 li 35f1d97 客户端,国际化处理,代码优化 b8bb2f3 文章详情页优化,前端国际化处理 a4be341 优化左侧菜单和路由,新增lsit_article和wx 7dc887a 新增路由跳转 efb3c7d 初始化代码2. 回滚到干净提交(保留当前代码)执行命令,替换成你的干净提交 ID fe42f42:
git reset --soft fe42f423. 重新提交代码(无大文件)此时你的代码是「移除视频后的落地页完成状态」,执行提交:
git add . git commit -m "移除大文件后重新提交"4.强制推送覆盖远程历史
git push origin master --force总结:有大文件可以先把大文件移出,再提交代码,或者向.gitignore中添加忽略规则,提交时忽略某些大文件,或者使用 Git LFS(大文件存储)
忽略规则:
# 向.gitignore中添加忽略规则(没有该文件会自动创建) echo "*.mp4" >> .gitignore echo "*.avi" >> .gitignore echo "*.mov" >> .gitignore echo "*.zip" >> .gitignore echo "*.rar" >> .gitignore # 提交.gitignore规则 git add .gitignore git commit -m "添加.gitignore,忽略大文件/视频文件" git push origin master # 这次不用--force,正常推送即可 验证操作是否成功 推送完成后,执行以下命令查看远程提交历史,确认只有干净的提交: git log --oneline origin/master 输出应该包含你新提交的「落地页已完成(移除大文件后重新提交)」,且无任何包含大文件的提交记录Git LFS:
Git LFS(Large File Storage)是 Git 官方的扩展(无需额外插件,可直接安装),专门解决大文件问题:
原理:把大文件存储在单独的服务器,Git 仓库只保留文件的「引用链接」,不存实际内容;
支持大小:Gitee/GitHub 的 LFS 支持单个文件最大2GB;
安装 / 使用(以 Gitee 为例): # 1. 安装Git LFS(本地) git lfs install # 2. 追踪需要管理的大文件类型(比如mp4视频) git lfs track "*.mp4" # 3. 提交.gitattributes(LFS的配置文件) git add .gitattributes git commit -m "配置Git LFS追踪大文件" # 4. 正常提交大文件 git add big_video.mp4 git commit -m "添加视频文件(LFS管理)" git push origin masterPS:
# 1. 拉取远程最新代码(确保本地与远程同步,避免冲突) git pull origin master # 2. 添加本地所有变更(含新建/修改的文件/文件夹) git add . # 3. 提交本地变更(备注清晰的更新说明) git commit -m "" # 4. 推送本地提交到远程仓库 git push