很抱歉问了这个愚蠢的问题。
我正在尝试将我的repo(本地(复制到另一个本地目录中。如果我只是简单地执行回购的CMD + c
和CMD + 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
,那么从远程而不是从本地副本克隆可能更容易。