首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从多个合并的分支中删除多个提交

从多个合并的分支中删除多个提交
EN

Stack Overflow用户
提问于 2019-06-28 06:02:31
回答 1查看 60关注 0票数 1

有人给了我一个回收单让我写。我假设这是一个公司代金库,然后我兴高采烈地开始创建分支,最后我将它们合并成一个单独的分支,删除临时分支并推送。今天他给我发消息说这是他的个人回购,所以如果我能从他的回购中去掉我的烂摊子,那就太好了。我保存了我的工作,并将其移动到一个新的存储库,但我不知道如何删除提交,这样我就不会用我的名字“污点”他的历史:D

 git reset --hard hislastcommitsha 

不起作用。它移动头部,但提交仍然在适当的位置。我甚至可以查看它们。我要他们消失就像他们从未存在过一样。

我假设它们没有被删除,因为即使只有一个分支(master),这些提交也来自之前的多个分支(开发和主题分支)的合并。

我能做些什么来从他的历史记录中删除我的提交/名字吗?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-28 08:22:52

(基本假设:你在回购上有足够的权利使用--force,因为相反,你的朋友要求你清理任何东西都是一个无法满足的要求)

当你推入分支(master)时,git实际上推入了所有通过祖先可达的新提交,从你的新ref 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

然而,重要提示:在这一点上,你(错误地)推送的新提交并没有从他的repo中删除,它们只是没有被任何分支引用,所以它们现在是垃圾回收的候选对象。

这就是为什么你仍然可以在你的本地资源库中查看它们的原因。

如果出于任何原因,您的朋友不想等待典型的垃圾收集时间,他可以选择使用git gc手动触发垃圾收集,并且可以选择适合您的情况的任何参数,这由他决定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56798946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档