Git:你如何打破与原始回购的关系?

时间:2015-01-23 18:24:00

标签: git

我想分拆一个回购集团,意图打破与原始回购的联系。没有任何拉动请求或任何未来的合并。新的仓库将有一个新的项目名称。我不复制源文件并从头开始一个全新的repo的唯一原因是因为我想保留提交历史记录。我该怎么做?

澄清:我确实使用Github。我以前没有意识到Github特有的东西。根据我的具体需求,我有一个git repo,它包含两个独立的项目(一个Scala,一个Java)。这两个项目的文件已经开始相互干扰,所以我要分配repo,并在新的repo中删除Scala项目的所有文件。在原始仓库中,我将删除Java项目的所有文件。

1 个答案:

答案 0 :(得分:8)

如果您计划保留原始项目中的所有内容(或几乎所有内容),我会正常分叉并开始大量修改。

如果您只需要一小部分文件,则可以使用filter-branch从整个历史记录中删除不需要的部分存储库。此步骤将更改每个提交SHA,并使其无法从原始提取或合并(至少自动)。但是,这不是必要

如果您担心意外的跨项目污染,您可以使用filter-branch步骤来确保历史记录不兼容,即使您保留了大部分文件。如果没有什么可以删除,你可以做一些简单的事情,比如重写初始提交的提交消息。

如果这是一个 github 问题,我认为您需要做的是将repo克隆到本地机器,在github上创建一个新项目(而不是分支原始),然后推动新项目。据我所知,Github不会弄清楚这种关系。但如果你担心,初始克隆和推送之间仍然存在filter-branch