是否可以删除特定用户的所有提交?

Suc*_*tha 6 git github

我正在使用github的git存储库.使用存储库中的所有提交和日志,现在我需要删除特定用户(例如User1)的所有提交.如何删除他的所有提交?

eck*_*kes 7

是.手册页git filter-branch提供了一个现成的示例:这将从工作树中删除"Darl McBribe"的所有提交(在您的情况下,这将是User1).

git filter-branch --commit-filter '
    if [ "$GIT_AUTHOR_NAME" = "Darl McBribe" ];
    then
            skip_commit "$@";
    else
            git commit-tree "$@";
    fi' HEAD
Run Code Online (Sandbox Code Playgroud)

其中函数skip_commit定义如下:

skip_commit()
{
    shift;
    while [ -n "$1" ];
    do
            shift;
            map "$1";
            shift;
    done;
}
Run Code Online (Sandbox Code Playgroud)

但是,一如既往改变你的回购历史:如果有人在修改之前从回购中撤出,他就会遇到麻烦.