有人给了我一个回购来继续工作。我以为这是公司回购协议,因此我很高兴开始创建分支机构,然后最终将它们合并为一个分支机构,删除了临时分支机构并进行了推送。今天,他告诉我这是他的个人回购消息,因此,如果有可能,我可以从他的回购消息中删除我的烂摊子。我保存了工作并将其移至新的存储库,但是我不知道如何删除提交,因此我不会用我的名字“ D”“弄脏”他的历史
git reset --hard hislastcommitsha
不起作用。它移动了头部,但是提交仍然存在。我什至可以检查出来。我希望它们消失,就像它们不存在一样。
我认为它们不会被删除,因为即使只有一个分支(主控),这些提交也来自先前合并的多个分支(开发和主题分支)。
我有什么办法可以从他的历史记录中删除我的提交/名称?
非常感激
(基本假设:您有足够的权利回购,--force
因为相反,您的朋友要您清理任何东西将是无法满足的需求)
当您按下分支(master
)时,git实际上会推送所有可通过祖先到达的新提交,从当前新引用master
指向的提交开始。
但是,当您最初克隆原始存储库时,其原始版本master
指向的是我们要还原的提交,hislastcommitsha
所以你需要
# as you already guessed, rewind your version of master
git reset --hard hislastcommitsha
# then push it to his repo
git push --force origin master
但是,重要的一点:在这一点上,(错误地)推送的新提交不会从其存储库中删除,它们只是未被任何分支引用,因此它们现在是垃圾收集的候选对象。
这就是您仍然可以在本地回购中检出它们的原因。
如果您的朋友出于某种原因不想等待典型的垃圾收集时间,则可以选择使用手动触发它,git gc
并且可以选择适合您情况的任何参数,这取决于他。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句