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

  • 本文关键字:另一个 分支 Git 复制 git
  • 更新时间 :
  • 英文 :


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

我正在尝试将我的repo(本地(复制到另一个本地目录中。如果我只是简单地执行回购的CMD + cCMD + v,那么实际上我复制了本地回购的所有分支。如何只复制一个分支?

感谢

当我们将回购移动到新服务器时,我遇到了同样的问题。

我刚刚从我的旧回购中做到了:

git push <path_to_new_local_repo> <branch_name>

而且效果非常好。

每个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-base-branch分支创建一个名为your-new-branch-name的新分支。

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

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

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

git worktree prune

您想要的似乎是第二个目录中的一个新repo,它只包含一个分支。这是可以做到的,尽管这有点不寻常,我想知道这是否真的是做任何你想做的事情的最佳方式…

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

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

这将初始化一个新的repo,并只获取名为<branch_name>的分支所需的历史记录和对象。新的回购将把现有的本地回购称为名为origin的远程回购。如果你愿意,你可以通过cd进入新的回购并说来撤销这一操作

git remote remove origin

如果您的本地repo有一个远程,并且您希望新repo也使用远程作为其origin,那么从远程而不是从本地副本克隆可能更容易。

最新更新