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

k97glaaz  于 2023-01-04  发布在  Git
关注(0)|答案(1)|浏览(170)

当我第一次使用这个repo的时候,我之前没有使用过git,并且错误地输入了我的电子邮件或者其他东西,所以有一段时间所有的提交都是由用户“unknown”完成的。我在这里找到了一个答案,可以将所有“unknown”提交转换为我的名字,但它实际上是复制提交并应用我的名字。所以现在我有了所有这些“unknown”用户分散提交。
所以我想知道一些命令来删除所有由“未知”用户提交。

2g32fytz

2g32fytz1#

你必须在你的repo中使用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来将新分支重定基到新分支之上。collab也应该确保他们的分支不会重新引入文件,因为这会覆盖.gitignore文件。确保你的collab使用rebase而不是merge,否则他只会重新引入文件和整个被污染的历史...并可能遇到一些合并冲突。
http://help.github.com/remove-sensitive-data/

相关问题