如何从现有的git存储库创建一个新的git存储库

rez*_*eza 68 git

我有一个远程git存储库,它真正取代了我们在另一个旧SCM中所拥有的一切.多年来,许多项目和产品已添加到存储库中.

这个仓库中有一个分支,对应于我感兴趣的产品.我想只从这个分支创建一个全新的git存储库,而不是真正关注历史的丢失.

是git remote添加解决方案吗?我希望这两个存储库都在同一台服务器上.

思考?

pes*_*lla 72

为了从现有存储库创建新的Git存储库,通常会创建一个新的存储库并将一个或多个分支从现有存储库推送到新存储库.

以下步骤说明了这一点:

  1. 创建一个新的存储库.它必须是裸露的,以便你推动它.

    $ mkdir /path/to/new_repo
    $ cd /path/to/new_repo
    $ git --bare init
    Run Code Online (Sandbox Code Playgroud)

    注意:确保可以从现有存储库访问新存储库.有很多方法可以做到这一点; 让我们假设您已通过它访问它ssh://my_host/new_repo.

  2. 从现有存储库中推送分支.例如,假设我们topic1要从现有存储库中推送分支,并将其命名master为新存储库.

    $ cd /path/to/existing_repo
    $ git push ssh://my_host/new_repo +topic1:master
    Run Code Online (Sandbox Code Playgroud)

此技术允许您保留现有分支的历史记录.

注意:新存储库实际上是一个新的远程存储库.如果要使用新存储库,则必须克隆它.以下内容将新repo克隆到名为的本地工作目录中new_repo:

$ git clone ssh://my_host/new_repo
Run Code Online (Sandbox Code Playgroud)

在此示例中,当您克隆新存储库时,您将看到该master分支是topic1旧存储库的分支的副本.

  • 如果您将定期推送到远程仓库,那么对于`git remote add origin ssh:// my_host/new_repo`可能是一个很好的建议.这样你就可以做一个`git push origin [branchname]`.使用UNC filepathes时(例如对于windowsshares),请务必输入为它们添加远程源:`git remote add origin"// server_name/myapp /"` (10认同)

Jus*_*ork 19

像平常一样下拉分支,然后将分支推送到您使用创建的新存储库git init.您将使用类似于以下内容的代码:

git push url:///new/repo.git TheBranchFolder
Run Code Online (Sandbox Code Playgroud)

如果这是对情况的加分,此方法还会保留您之前的所有更改.


Jus*_*ᚄᚒᚔ 17

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

git init; git commit -a -m "Imported from project Y"
Run Code Online (Sandbox Code Playgroud)

  • @MikeGraf:不,正如答案中第一句的第一部分所指出的:*"如果你不担心失去历史......"* (15认同)
  • 这将保留原始回购的提交历史吗? (2认同)
  • 您可能还需要删除/编辑 .gitignore,否则上述命令将在提交期间留下潜在的重要文件。 (2认同)

小智 7

我不知道我的答案是否仍然有帮助,但这是使用现有存储库创建新存储库的另一种方法。
第 1 步:克隆现有存储库。
第2步:删除.git克隆的repo文件夹中的文件夹
第3步:在git中创建一个新的repo。
步骤 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