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

时间:2018-07-21 23:21:34

标签: git

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

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

谢谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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

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

来撤消此操作
git remote remove origin

如果您的本地存储库有一个远程站点,并且您希望新的存储库也将那个远程站点用作其origin,那么从远程站点而不是从远程站点克隆可能会更容易。本地副本。

答案 2 :(得分:0)

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

我只是从以前的仓库中提取信息

git push <path_to_new_local_repo> <branch_name>

,效果很好。