git filter-branch --tree-filter 'rm filename' HEAD 但是,如果某个提交的树中没有该文件,那么简单的rm filename就会在该树和提交中失败。 因此,你可能需要使用rm -f filename作为脚本。 将--index-filter与git rm一起使用,速度会快很多。 和使用rm filename一样,如果文件不在提交树中,git rm --cached...
更优解是使用git filter-branch -f --prune-empty --tree-filter 'bash preserve-only.sh a b' -- --all。此命令中,preserve-only.sh脚本为:IFS=':' GLOBIGNORE="$*" rm -rf *。脚本功能是移除所有文件与子目录,保留指定的/a和/b。在所有分支的所有提交中剔除这两个目录,确保提取与...
Cygwin专用Bash函数:git-filter-branch,此函数把git filter-branch命令做了上层封装,针对多个文件自动生成应用脚本shell,以便快捷方便地从Git仓库提交历史记录中永久删除某些文件; 使用方法: 在Cygwin中运行git-filter-branch xxx即可 注意使用文件的相对路径,支持同时指定多个文件,支持使用通配符; 使用帮助: $ git-filter...
filter-branch需要指定目录,拆分仓库时可能需要同时保留多个目录,可以使用以下脚本(这里仅保留 aaa,如果填的是 aaa bbb,即可同时保留 aaa 和 bbb 文件夹): copy 1 gitfilter-branch --index-filter'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- aaa'--prune-empty -- ...
为解决此问题,推荐使用 git-filter-branch -f --prune-empty --tree-filter 'bash preserve-only.sh a b' -- --all。这里的 preserve-only.sh 脚本包含逻辑以从所有分支的所有提交中移除目录 a 和 b。这与提取单一目录相似,但操作更为高效。完成实际的拆分,使用 rm -rf ab 命令,可以获取...
如果需要修改多个提交的提交人信息,可以使用 Git 的 `filter-branch` 命令。下面是具体的步骤: – 创建一个脚本文件(例如 `change-author.sh`),内容如下: “`bash #!/bin/sh git filter-branch –commit-filter ‘ if [ “$GIT_AUTHOR_NAME” = “Old Author Name” ]; then ...
有,就是 filter-branch。 它可以在一系列 commit 上自动执行脚本。 比如--tree-filter 指定的脚本就是用来修改 commit 里的文件的。 我们再回到初始状态: 创建了一个 .js constfs =require('fs'); constcontent = fs.readFileSync('./index.md', { ...
git filter-branch--tree-filter'rm filename'HEAD 但是,如果该文件在某个提交的树中不存在,则该树的简单操作rm filename将失败并提交。因此,您可以改为使用rm -f filename脚本。 使用它--index-filter可以git rm产生更快的版本。与使用一样,如果文件不在提交树中rm filename,git rm --cached filename将会...
$ git filter-branch –commit-filter “` 这个命令可以对多个提交记录进行重写。你可以自定义一个脚本来修改提交记录,然后对相关的提交应用这个脚本。 请注意,在修改已提交的记录之后,你可能需要使用git push –force命令来强制推送到远程仓库。同时,修改已经共享的提交记录可能会影响到其他开发人员的工作,所以在使用...
第二步:执行下面脚本 代码语言:javascript 复制 git filter-branch-f--env-filter 'OLD_EMAIL="原来的邮箱"CORRECT_NAME="studeyang"CORRECT_EMAIL="yanglu_u@126.com"if["$GIT_COMMITTER_EMAIL"="$OLD_EMAIL"]thenexportGIT_COMMITTER_NAME="$CORRECT_NAME"exportGIT_COMMITTER_EMAIL="$CORRECT_EMAIL"fiif["...