我在github上创建了一个项目,其他人也参与了这个项目。现在我意识到我在笔记本电脑上登录到了错误的github用户,我在那里提交了这个存储库。
在这一点上,提交历史中也有其他人。作为存储库的所有者(从我打算提交的实际用户),是否有任何方法可以将我的提交从一个用户“转移”到另一个用户,从“错误的用户”中删除所有内容,并将其添加到“正确的用户”,而不删除整个.git,从零开始(因为其他贡献者的提交必须保留)?
谢谢:)
最佳答案
嗯,有人问你重写历史是否可以(但没有解释后果),你回答说可以(尽管我怀疑你是否理解后果),所以让我们澄清一下。
如果重写历史记录,则每个其他用户的存储库都将被破坏。不是“坏得无法修复”,但还是坏了。他们必须采取措施来解决问题;如果你想让他们“以正确的方式”解决问题——也就是说,在不取消历史重写的情况下——那么你就需要提前让他们知道发生了什么,他们需要做什么。
如果这看起来还可以,值得你为此付出代价,那么就可以做到。我将继续指出,如果我是你的项目的贡献者,我将不高兴的决定强加给我,我的额外努力是“值得的”,以纠正一个美学问题,而不是我做的。
Recovering from Upstream Rebase下的git rebase
文档描述了用户将发现自己的情况。所以我要先检查一下。在重写整个存储库历史时,我的一般建议是让每个人将所有代码推送到源代码并丢弃其克隆,然后进行重写,然后让每个人重新克隆;因为在重写后修复旧克隆可能是一个严重的麻烦。
如果最终决定重写,那么可以将git filter-branch
与--env-filter
参数一起使用。