Fork me on GitHub

git filter-branch修改author和committer

引自git filter-branch应用

git clone 的 next 主题,自己修改后想保存到 github,但发现 committer 显示为原作者。用 filter-branch 修改为自己

filter-branch修改author和committer

只修改当前项目,不会影响本机 global 设置及其它项目

1
2
3
4
5
6
7
8
9
10
git filter-branch --commit-filter '
export GIT_AUTHOR_EMAIL=me@example.com;
export GIT_AUTHOR_NAME=me;
export GIT_COMMITTER_EMAIL=me@example.com;
export GIT_COMMITTER_NAME=me;
git commit-tree "$@"
'

// 强制推送到远端
git push origin master --force

注:上面的方法只能重写历史,再次提交时,还是显示原作者。解决此问题见同一台电脑不同账号提交github

其它

删除误提交的文件

用 git filter-branch 对所有分支上的 commit 执行命令操作,忽略对该文件的追踪,将其从 git 仓库中移除,并重写每一条记录

1
2
3
4
5
6
7
8
9
10
// 从指定的 commit 中删除误操作文件的记录
git filter-branch --tree-filter 'git rm -f --ignore-unmatch {{文件名}}' [commit1..commit2]

// 或

// 从当前分支的前 30 次提交开始遍历,删除误操作文件的引用
git filter-branch --tree-filter 'git rm -f {{文件名}}' HEAD~30..HEAD

// 强制推送到远端
git push origin master --force
-------------感谢您的阅读 有问题请留言(或mailto:frostbelt@sina.cn)-------------