如何删除某个作者的所有提交(错误提交 - 这样的作者不应该在提交历史记录中可见)。
我找到了一些重命名的代码 -
git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="name"
CORRECT_EMAIL="[email protected]"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
git push --force --tags origin 'refs/heads/*'
是否有一些过滤器不重命名但删除此类提交?
最佳答案
你可以这样做:
git checkout -b <branch-name> <base-commit>
git log --author "<name>" --invert-grep --reverse --format="format:%H" HEAD..master | xargs git cherry-pick
log
过滤掉作者所做的所有提交,然后 cherry-pick
将它们一个接一个。参数说明(部分引用自
git log
manpage):--author "name"
将提交输出限制为具有与指定模式(正则表达式)匹配的作者/提交者标题行的提交输出。使用多个 --author=,提交其作者与任何给定的选择模式(类似于多个 --committer=)。
--invert-grep
将提交输出限制为日志消息与 --grep= --reverse
以相反的顺序输出提交。 […] --format="format:%H"
使用自定义格式,在这种情况下只有提交哈希 关于git - 删除作者的所有提交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39232800/