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

时间:2011-08-17 10:58:28

标签: git github

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

2 个答案:

答案 0 :(得分: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

其中函数skip_commit的定义如下:

skip_commit()
{
    shift;
    while [ -n "$1" ];
    do
            shift;
            map "$1";
            shift;
    done;
}

但是,一如既往地改变您的回购历史记录:如果有人在您修改回购之前撤回回购,he'll be in trouble

答案 1 :(得分:2)

是的,您可以使用git filter-branch执行此操作,但您必须考虑这样做的含义。特别是当其他提交基于必须删除的用户提交时。

当只有少数提交需要过滤时,你应该使用cherry pick和rebase。