我有一个远程git存储库,它真正取代了我们在另一个旧SCM中所拥有的一切。多年来,许多项目和产品已添加到存储库中。
此仓库中有一个分支,对应于我感兴趣的产品。 我想只从这个分支创建一个全新的git存储库,而不是真正关心历史的丢失。
git remote是否添加解决方案?我希望这两个存储库都在同一台服务器上。
思想?
答案 0 :(得分:63)
为了从现有存储库创建新的Git存储库,通常会创建一个新的 bare 存储库,并将一个或多个分支从现有存储库推送到新存储库。
以下步骤说明了这一点:
创建新存储库。它必须裸才能推送到它。
$ mkdir /path/to/new_repo
$ cd /path/to/new_repo
$ git --bare init
注意:确保可以从现有存储库访问新存储库。有很多方法可以做到这一点;我们假设您已通过ssh://my_host/new_repo
访问它。
从现有存储库中推送分支。例如,假设我们要从现有存储库中推送分支topic1
,并在新存储库中将其命名为master
。
$ cd /path/to/existing_repo
$ git push ssh://my_host/new_repo +topic1:master
此技术允许您保留现有分支的历史记录。
注意:新存储库实际上是一个新的远程存储库。如果要使用新存储库,则必须克隆它。以下内容将新repo克隆到名为new_repo
的本地工作目录中:
$ git clone ssh://my_host/new_repo
在此示例中,当您克隆新存储库时,您将看到master
分支是旧存储库的topic1
分支的副本。
答案 1 :(得分:17)
如果您不担心丢失历史记录,请执行git checkout mybranch
,然后将目录内容复制到另一个文件夹。在该文件夹中,删除.git文件夹,然后:
git init; git commit -a -m "Imported from project Y"
答案 2 :(得分:17)
像平常一样下拉分支,然后将分支推送到您使用git init
创建的新存储库。您将使用类似于以下内容的代码:
git push url:///new/repo.git TheBranchFolder
此方法还会保留您之前的所有更改,如果这是对情况的加分。