Git,从父Repo中删除提交

时间:2016-07-18 03:24:51

标签: git github

我克隆了一个项目的起始回购。花了几个星期的时间懒散地工作并做出承诺。现在我意识到我的回购中有很多旧的提交与我的项目没有任何关系。除了我的回购还有几十个从未参与该项目的贡献者。

我想摆脱与项目无关的旧提交并保留自己的提交。

使用

git rebase -i

我能够将squash所有旧提交分成两个提交。但是,在我的历史中,我如何能够抓住这两个人。因为变基似乎要求我使用第二个最早的提交作为我压缩的提交。

所以有三个提交:

  1. 我最初的提交
  2. 中间提交
  3. 旧的初始提交
  4. 我想squash将它们全部放入第一个,但不知道如何,因为我似乎只能解压缩到较旧的提交。

    这将是the repo

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,那么您的问题是您没有root提交来压缩原始提交。您可以通过重新绑定到孤立分支来解决此问题,从而在其他所有内容之前注入新的root提交:

(master) $ git checkout --orphan newmaster
(newmaster) $ git reset --hard
(newmaster) $ git commit --allow-empty -m 'Initial commit'
(newmaster) $ git checkout master
(master) $ git rebase newmaster
(master) $ git rebase -i "<<hash of root commit>>"
(master) $ git push --force

这是一个非常生硬的工具。它让我想起了一句古老的格言:“只因为你可以,并不意味着你应该这样做。”

注意:您的主程序中的每个提交哈希都将被重写,因此请确保您在任何地方都没有打开分支。如果您的存储库包含您要保留的任何标记,则必须强制更新所有标记。我建议你首先在一次性克隆上试一试,以确保它能以你愿意支付的价格获得你所寻找的东西。

相关问题