警告:git-filter-branch 存在大量陷阱,会导致历史重写混乱

警告:git-filter-branch 存在大量陷阱,会导致历史重写混乱

我想从我的本地 git 存储库中清理一个大文件(顺便清理我的存储库以减小大小)。这是我的 bash:

#!/bin/bash
bigfile="/path_to_mygitproject/bigfile.tar.gz"
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch '"$bigfile"'' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch '"$bigfile"'' HEAD

但现在显示以下警告:

WARNING: git-filter-branch has a glut of gotchas generating mangled history
     rewrites.  Hit Ctrl-C before proceeding to abort, then use an
     alternative filtering tool such as 'git filter-repo'
     (https://github.com/newren/git-filter-repo/) instead.  See the
     filter-branch manual page for more details; to squelch this warning,
     set FILTER_BRANCH_SQUELCH_WARNING=1.

我一直使用这个 bash,从来没有遇到过问题。直到现在。我猜 git 中有些东西发生了变化。

我尝试用“git filter-repo”替换“git filter-branch”,但收到以下消息:

git: 'filter-repo' is not a git command. Look at 'git --help'.but

我应该修复什么?谢谢

更新:

我这样做了,但似乎一切都变了

wget https://raw.githubusercontent.com/newren/git-filter-repo/master/git-filter-repo -O /home/user/.local/bin/git-filter-repo
chmod +x /home/user/.local/bin/git-filter-repo

并将我的脚本中的“git filter-branch”替换为“git filter-repo”。输出:

git-filter-repo: error: argument --prune-empty: expected one argument
git-filter-repo: error: unrecognized arguments: --index-filter git rm -r --cached --ignore-unmatch bigfile.tar.gz HEAD

我检查了例子我添加了“--prune-empty auto”,但我无法修复我的脚本,因为我不知道“--index-filter”或“--tag-name-filter”的替代方案是什么(似乎它们不存在)

git filter-repo --version
ffc6fa9265d8
git --version
git version 2.25.1

更新:

我已设法使用以下命令减小了我的 repo 的大小:

git filter-repo --strip-blobs-bigger-than 10M

但这是一个不合适的方法,因为我可以删除其他大于 10M 并且我不想删除的文件

解决了!

git filter-repo --path bigfile.tar.gz --invert-paths

投票结束

相关内容