github:你如何删除某个用户名的所有提交

时间:2011-11-08 23:32:50

标签: git github

当我第一次开始使用这个仓库时,我之前没有使用过git,并且通过错误输入我的电子邮件或者其他东西来掩盖设置,所以所有提交一段时间都是由用户做出的“未知”。我在这里找到了一个答案,将所有“未知”提交转换为我的名字,但它实际上做的是复制提交并应用我的名字。所以现在我把所有这些“未知”的用户提交分散了。

所以我想知道一些命令要运行以删除“未知”用户的所有提交。

1 个答案:

答案 0 :(得分:16)

您必须使用git filter-branch(在您的仓库中)并强制推送到github。

手册中的示例处理几乎与您要删除特定用户的提交相同的情况:

git filter-branch --commit-filter '
    if [ "$GIT_AUTHOR_NAME" = "Darl McBribe" ];
    then
            skip_commit "$@";
    else
            git commit-tree "$@";
    fi' HEAD

请注意,这会重写您的历史记录,并且可能会影响其他同时使用您对协作者的repo.Github建议的人:

  

与合作者打交道

     

您可能有合作者拉动您的污点分支并创建   他们自己的分支机构。他们取出你的新分支后,他们   将需要在他们自己的分支上使用git rebase来重新绑定它们   新的顶部。合作还应确保他们的分支机构   不重新引入文件,因为这将覆盖.gitignore   文件。确保您的协作使用rebase而不是合并,否则他   将重新引入文件和整个污染的历史...和   可能会遇到一些合并冲突。

http://help.github.com/remove-sensitive-data/