git filter-branch存在大量隐患,可能会对预期的历史重写产生不明显的误差(而且由于其性能糟糕,你几乎没有时间去研究这些问题)。 这些安全和性能问题无法向后兼容修复,因此不建议使用。 请使用其他历史过滤工具,如git filter-repo。 如果您仍然需要使用git filter-branch,请仔细阅读安全性(和性能)以了解 filter-branch ...
1.https://docs.github.com/cn/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository 2.https://github.com/newren/git-filter-repo 3.https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html#EXAMPLES 文中只是提及了git-filt...
git-filter-repo是官方推荐用于修改commit历史的小工具,详情参见:https://github.com/newren/git-filter-repo/tree/main/contrib/filter-repo-demos。 依赖条件 要使用 git-filter-repo工具,需要做如下准备: git >= 2.22.0 at a minimum some featuresrequire git >= 2.24.0 ...
git-filter-branch - Rewrite branches SYNOPSIS git filter-branch[--env-filter ] [--tree-filter ] [--index-filter ] [--parent-filter ] [--msg-filter ] [--commit-filter ] [--tag-name-filter ] [--subdirectory-filter <directory>] [--prune-empty] [--original <namespace>] [-d <...
在功能方面,git-filter-repo的人机交互设计让其面对简单的修改更加游刃有余,同时仍然可以像复杂的git-filter-branch命令一样完成庞杂的任务。 接下来我们考虑如何利用这个强大的工具来进行git项目的迁移。 首先,需要定义成功迁移的标准: 删减server目录,仅保留webapp目录,并让webapp成为新的根目录 ...
git-filter-branch 功能:过滤分支,从Git提交历史中永久移除某些文件,参数请传递文件名或文件的相对路径! 说明:支持一个或多个,善用通配符 * 匹配多个文件,可用单引号包裹 * 号防止通配符被展开。 Usage :git-filter-branch /path/to/file1 [/path/to/file2] [/path/to/file3] ... ...
最近项目里的代码再给codeup上推的时候,提示单个文件有200M的,提示使用Git-LFS,但是我觉得是个测试文件,没必要,而且试了试用这玩意也挺麻烦,以后clone库也会很大,于是目标就是把log里的大文件记录删除。 于是不小小搜到了git-filter-branch,发现还挺牛逼,试用成功,解决了问题,再次记录一下实践。
我知道 git filter-branch --subdirectory-filter ,它非常适合提取单个目录,但似乎无法一次提取多个目录。我也知道 git filter-branch --prune-empty --tree-filter ,这可以让我删除一切,但两个想要的目录。这感觉不完全正确,因为我必须手动指定所有可能存在的顶层目录。是否有更好的方法从大型存储库中提取两个目录...
首先使用这个命令安装 git-filter-repo 版本要求:python3 >= 3.5 | git >= 2.22.0 安装成功以后,找到一个带有git仓库的项目,可以...
# if you run 'skip_commit "$@"' in a commit filter, it will print # the (mapped) parents, effectively skipping the commit.skip_commit() { shift; while [ -n "$1" ]; do shift; map "$1"; shift; done; } # if you run 'git_commit_non_empty_tree "$@"' in ...