当我第一次使用这个repo的时候,我之前没有使用过git,并且错误地输入了我的电子邮件或者其他东西,所以有一段时间所有的提交都是由用户“unknown”完成的。我在这里找到了一个答案,可以将所有“unknown”提交转换为我的名字,但它实际上是复制提交并应用我的名字。所以现在我有了所有这些“unknown”用户分散提交。所以我想知道一些命令来删除所有由“未知”用户提交。
2g32fytz1#
你必须在你的repo中使用git filter-branch并强制将其推送到Github。这里有一个来自官方文档的例子,它处理了几乎相同的情况,即你想删除某个特定用户的提交:
git filter-branch
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/
1条答案
按热度按时间2g32fytz1#
你必须在你的repo中使用
git filter-branch
并强制将其推送到Github。这里有一个来自官方文档的例子,它处理了几乎相同的情况,即你想删除某个特定用户的提交:
请注意,这将改写您的历史记录,并可能影响其他使用您的repo的用户。Github的一些建议:
与合作者打交道
你可能会有合作者从你的被感染分支中提取出自己的分支。在他们获取你的新分支后,他们需要在他们自己的分支上使用git rebase来将新分支重定基到新分支之上。collab也应该确保他们的分支不会重新引入文件,因为这会覆盖.gitignore文件。确保你的collab使用rebase而不是merge,否则他只会重新引入文件和整个被污染的历史...并可能遇到一些合并冲突。
http://help.github.com/remove-sensitive-data/