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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

有人给了我一个回购工作。我认为这是一个公司回购,我开始创建分支,然后最后我将它们合并为一个,删除临时分支并推送。今天他告诉我这是他个人的回购,所以如果可能的话,我可以从他的回购中删除我的烂摊子。我保存了我的工作,并把它搬到了一个新的仓库,但我不知道如何删除这些提交,所以我不会用我的名字“染色”他的历史:D

 git reset -hard hislastcommitsha 

不起作用。它会移动头部,但提交仍然存在。我甚至可以检查出来。我希望他们像往常一样消失。

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

有什么我可以做的从我的历史中删除我的提交/名称?

非常感激

提问于
用户回答回答于

(基本假设:你有足够的权利在回购推销,--force因为相反,你的朋友要求你清理任何东西将是一个不可满足的要求)

当你推动branch(master)时,git实际上推送了任何可以通过祖先访问的新提交,从你的新ref master正在进行的提交开始。

但是当你最初克隆原始的repo时,它自己的版本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

所属标签

可能回答问题的人

  • 应用案例分享

    1 粉丝490 提问19 回答
  • 学生

    3 粉丝476 提问13 回答
  • uncle_light

    5 粉丝518 提问12 回答
  • 最爱开车啦

    8 粉丝503 提问12 回答

扫码关注云+社区

领取腾讯云代金券