我有一个远程git存储库,它确实替代了另一个旧SCM中的所有内容。这些年来,许多项目和产品已添加到资源库中。
此存储库中有一个分支,与我感兴趣的产品相对应。我只想从该分支中创建一个全新的git存储库,而不必担心丢失历史记录。
git remote是否添加解决方案?我希望这两个存储库都在同一服务器上。
有什么想法吗?
Answers:
为了从现有存储库创建一个新的Git存储库,通常会创建一个新的裸存储库,并将一个或多个分支从现有存储库推送到新存储库。
以下步骤说明了这一点:
创建一个新的存储库。它必须是裸露的,以便您推动它。
$ 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此技术使您可以保留现有分支的历史记录。
注意:新存储库实际上是新的远程存储库。如果要使用新的存储库,则必须对其进行克隆。下面将新仓库复制到本地工作目录new_repo:
$ git clone ssh://my_host/new_repo
在此示例中,克隆新存储库时,您会看到该master分支是topic1旧存储库分支的副本。
ssh协议进行推送和克隆;但是我们可以类似地使用该file协议,该协议将在同一文件系统上创建新的存储库。
像往常一样下拉分支,然后将分支推送到使用创建的新存储库git init。您将使用类似于以下内容的代码:
git push url:///new/repo.git TheBranchFolder
如果对这种情况有利的话,此方法还会保留您以前的所有更改。
如果您不担心丢失历史记录,请执行a git checkout mybranch,然后将目录内容复制到另一个文件夹。在该文件夹中,删除.git文件夹,然后:
git init; git commit -a -m "Imported from project Y"
git remote add origin ssh://my_host/new_repo。这样,您就可以执行git push origin [branchname]。使用UNC文件路径时(例如,对于git remote add origin "//server_name/myapp/"