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

最佳答案

是的。 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

函数skip_commit的定义如下:
skip_commit()
{
    shift;
    while [ -n "$1" ];
    do
            shift;
            map "$1";
            shift;
    done;
}

但是,一如往常,更改存储库的历史记录时:如果有人在修改存储库之前将其从存储库中 pull 出,请添加he'll be in trouble

09-03 22:08