如何从现有的git仓库创建新的git仓库

gdx19jrr  于 2022-12-10  发布在  Git
关注(0)|答案(5)|浏览(526)

我有一个远程git仓库,它真的取代了我们在另一个旧的SCM中的一切。多年来,许多项目和产品都被添加到了仓库中。
在这个repo中有一个分支,对应于我感兴趣的产品。我只想从这个分支创建一个全新的git仓库,而不是真正关心历史记录的丢失。
git remote是解决方案吗?我希望这两个仓库都在同一台服务器上。
有什么想法?

6mzjoqzu

6mzjoqzu1#

为了从现有仓库创建一个新的Git仓库,通常会创建一个新的 bare 仓库,并将一个或多个分支从现有仓库推送到新仓库。
以下步骤对此进行了说明:
1.创建一个新的资料档案库。它必须是 bare 才能推送到它。

$ mkdir /path/to/new_repo
$ cd /path/to/new_repo
$ git --bare init
  • 注意 *:确保您的新存储库可以从现有存储库访问。有很多方法可以做到这一点;假设您已经通过ssh://my_host/new_repo访问了它。

1.从现有仓库推送一个分支,例如我们想从现有仓库推送分支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分支的副本。

332nm8kg

332nm8kg2#

如果你不担心丢失历史记录,可以执行git checkout mybranch,然后将目录内容复制到另一个文件夹中。在该文件夹中,删除.git文件夹,然后:

git init; git commit -a -m "Imported from project Y"
kqlmhetl

kqlmhetl3#

像平常一样拉下分支,然后将分支推送到使用git init创建的新仓库中。

git push url:///new/repo.git TheBranchFolder

这种方法还保留了以前的所有更改,如果这对这种情况有利的话。

bd1hkmkf

bd1hkmkf4#

我不知道我的答案是否仍然有帮助,但这是另一种使用现有存储库创建新存储库的方法。
步骤1:克隆现有的存储库。
第二步:删除克隆的repo文件夹中的.git文件夹
步骤3:在git中创建一个新存储库。
步骤4:在克隆的repo文件夹中运行git init
步骤5:git add .
步骤6:git remote add origin NEW_REPO/URL
步骤7:git branch -M "branch_name"
步骤8:git push --set-upstream origin branch_name

uoifb46i

uoifb46i5#

我们的计算环境要求在远程服务器上创建git repos,所以git init不是一个好的选择。

git clone <NEW, EMPTY REPO> new
git clone <EXISTING REPO> old
cd new
git remote add --no-tags -f old_repo ../old
git checkout -b main old_repo/main
git push origin main

相关问题