首页 > 其他分享 >git删除某条记录的大文件提交

git删除某条记录的大文件提交

时间:2024-01-31 17:44:21浏览次数:24  
标签:文件 git 删除 -- filter 某条 提交

由于git误提交了个大文件(>1G),虽然删除了,但是提交记录还在,导致出发了git大文件警告。

需求:找到提交大文件的记录,删除提交的大文件。

针对所有分支删除该次提交的大文件:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch "DONS/MemoryCaptures/Snapshot-638413670716915937.snap"' --prune-empty -- --all

针对memory_swap_longlog分支删除该次提交的大文件
git filter-branch --index-filter 'git rm --cached --ignore-unmatch "DONS/MemoryCaptures/Snapshot-638413670716915937.snap"' --prune-empty -- memory_swap_longlog

效果:
之前这里有个大文件提交记录


chatGPT解释:
git filter-branch 是 Git 提供的一个强大工具,用于对 Git 仓库的历史进行重写。在这个命令中,你使用 --index-filter 选项指定了一个 shell 命令,该命令将应用于每个提交的索引(暂存区)。具体来说,这个命令将使用 git rm --cached --ignore-unmatch "DONS/MemoryCaptures/Snapshot-638413670716915937.snap" 作为索引筛选器。

让我解释一下这个命令的各个部分:

git filter-branch: 这是执行历史重写的 Git 命令。

--index-filter: 这个选项指定一个 shell 命令,该命令将被应用于每个提交的索引(暂存区)。

'git rm --cached --ignore-unmatch "DONS/MemoryCaptures/Snapshot-638413670716915937.snap"': 这是作为索引筛选器的命令。它使用 git rm 命令从索引中删除指定的文件,而 --cached 选项表示只从索引中删除,而不会删除工作目录中的实际文件。--ignore-unmatch 选项表示如果文件不存在,则继续执行,不报错。"DONS/MemoryCaptures/Snapshot-638413670716915937.snap" 是你要删除的大文件的路径。

--prune-empty: 这个选项表示在删除文件后,如果提交变为空(即没有任何变化),则删除这个提交。

--all: 这个参数表示对所有分支进行操作。

综合起来,这个命令的目的是删除历史记录中包含指定大文件的提交,并清理这些提交对应的索引。这是一个强大而有影响的操作,确保在执行之前备份你的仓库。同时,强制推送时要确保协作者知悉并同意,因为这会修改共享的历史。

标签:文件,git,删除,--,filter,某条,提交
From: https://www.cnblogs.com/swobble/p/17999784

相关文章

  • mac下git命令自动补全
    本文亲测可用。老版本macos方法:1、打开网页,https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash全选,复制内容。2、在~/.bash_profile文件(如果没有需要创建)中加入以下内容即可生效if\[-f~/.git-completion.bash\];then.~/.gi......
  • gitlab备份
    1)Gitlab的备份目录路径设置123456789101112[root@code-server~]#vim/etc/gitlab/gitlab.rbgitlab_rails['manage_backup_path']= truegitlab_rails['backup_path']= "/data/gitlab/backups"    //gitlab备份目录gitlab_rail......
  • github加速访问
    来源:https://github.com/521xueweihan/GitHub520/blob/main/README.md2.1手动方式2.1.1复制下面的内容#GitHub520HostStart140.82.113.25alive.github.com140.82.112.5api.github.com185.199.110.153assets-cdn.gi......
  • [git] out of memory malloc failed 解决
    [git]outofmemorymallocfailed解决-个人文章-SegmentFault思否git提交时,报错"Fatal:Outofmemory,mallocfailed(triedtoallocate42446849bytes)" 解决这个报错1、需要把windowMemory容量调大(默认10m,调整为50m)2、建议同时调整postbuffer的容量。3、最后还......
  • Git:删除所有 Commit 提交记录
    如果想要删除 Git 项目下的所有 Commit 提交,可以使用以下方法。 1. 创建孤立分支,并切换到该分支:gitcheckout--orphanlatest_branch2.暂存所有文件:gitadd-A3.提交所有更改:gitcommit-am"FirstCommit"4.删除主分支master:gitbranch-Dmaster5.重命名当前分......
  • mac配置gitlab
    使用ssh方式拉取gitlab仓库代码背景在公司mac电脑上需要将gitee仓库代码迁移到公司gitlab代码仓库中,而我习惯使用ssh方式关联git仓库。我也喜欢使用下面简单粗暴的方式来配置git,之前玩git在window10系统上玩的比较多,各种操作都玩过,比如:创建分支、切换分支、分支代码合并、单文件......
  • 使用kubectl中的强制删除pod命令
    1.使用kubectl中的强制删除命令kubectldeletepodnginx-nmmp--force--grace-period=02.删除非正常的poda.查询出所有要删除的podNamekubectlgetpo|grepUnknown|awk'{print$1}'b.批量删除kubectldeletepod`kubectlgetpo|grepUnknown|awk'{print$1}'`-......
  • Java:JetBrains系列IDEA使用Git很慢(任何git操作都很慢)
    问题说明公司电脑上使用IntelliJIDEA的时候发现操作Git特别的慢,status、fetch、pull、checkout、commit这些基础操作都特别特别慢!!!!!让人爆发的是在Settings里面查Git的版本需要20多秒!!!!!!(有时候真的想砸电脑……)解决办法这里查了好久的博文,几乎都是说commit屏蔽TODO检查的文章......
  • 如何安全的在一个已有的git分支上,自动化的切换到另外一个分支指定commit
    如何安全的在一个已有的git分支上,自动化的切换到另外一个分支指定commit?下面是一种干净的安全的可以自动化的做法:清理本地脏数据gitcheckout.gitclean-df.将commit重置到HEADgitreset--hardHEAD重置子git模块gitsubmoduleforeach--recursivegitreset--har......
  • (MJ出图转大模型)删除二级文件夹
    importosimportshutildefdelete_subfolders(directory):#检查目录是否存在ifnotos.path.exists(directory):print("指定的目录不存在:",directory)return#遍历目录中的所有项foriteminos.listdir(directory):item......