有没有可能删除特定用户的所有提交记录?

9

我正在使用Github上的git仓库。由于库中存在许多提交和日志,现在我需要删除特定用户(比如User1)的所有提交记录。我该如何删除他的所有提交记录?

2个回答

8

是的。git filter-branch 的 man 页面提供了一个现成的例子:这会从工作树中删除所有来自 "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;
}

但是,当你改变代码库历史记录时,就像往常一样:如果有人在你修改之前从代码库拉取过代码,他会遇到麻烦


2

可以使用git filter-branch实现,但是在这样做之前你需要考虑其影响。特别是当其他提交基于需要被删除的用户的提交时。

如果只有很少的提交需要筛选,则应使用cherry pick和rebase。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接