Git:将本地分支复制到另一个本地目录中

问题描述 投票:1回答:3

很抱歉问这个愚蠢的问题。

我正在尝试将我的仓库(本地)复制到另一个本地目录中。如果仅执行仓库的CMD + cCMD + v,则实际上复制了本地仓库的所有分支。如何只复制一个分支?

谢谢

git
3个回答
1
投票

每个git仓库都包含整个git提交树,因此无法通过复制和粘贴git文件夹仅获得一个分支的git仓库。

但是git worktree是为这种情况设计的。


只需在原始git存储库中键入此命令。

git worktree add -b <your-new-branch-name> <your-new-directory> <your-base-branch>

此命令意味着您将在路径your-new-directory中创建一个新文件夹,然后基于your-new-branch-name分支创建一个名为your-base-branch的新分支。

例如,您可以在下面键入此内容,以在原始文件夹旁边创建一个名为MyAnotherFolder的文件夹,并基于temp/my-copy创建一个新的分支master

git worktree add -b temp/my-copy ../MyAnotherFolder master

如果以后要删除该文件夹,请键入此命令以删除工作树引用。

git worktree prune

0
投票

您似乎要说的是第二个目录中的一个新回购,其中仅包含一个分支。可以做到的,虽然有点不寻常,但我想知道这是否真的是做您想做的事情的最佳方法...

无论如何,在大多数情况下,如果要复制存储库,最好使用git clone,而不是使用外部工具复制文件。在这种情况下,您可以说

git clone --single-branch --branch <branch_name> file://localhost/path/to/existing/repo

这将初始化一个新的存储库,并仅获取名为<branch_name>的分支所需的历史记录和对象。新的存储库将引用现有的本地存储库作为名为origin的远程目录。如果需要,您可以撤消此操作,方法是cd进入新的仓库,然后说

git remote remove origin

如果本地存储库具有远程,并且您希望新存储库也将that远程作为其origin,则从远程克隆而不是从本地副本克隆可能会更容易。


0
投票

当我们将仓库移至新服务器时,我遇到了同样的问题。

我只是从旧仓库中提取的:

git push <path_to_new_local_repo> <branch_name>

而且效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.