我的主分支和开发分支在GitHub上被远程跟踪。如何克隆这两个分支?


当前回答

好吧,当你克隆你的回购时,你有所有的分支。。。

如果你只是做git分支,它们是隐藏的。。。

所以,如果您想查看所有分支的名称,只需添加--all标志,如下所示:

gitbranch—all或gitbranch-a

如果你只是到分行结账,你就能得到你所需要的一切。

但是,如果你克隆后,其他人创建了分支,该怎么办?

在这种情况下,只需执行以下操作:

git获取

并再次检查所有分支。。。

如果您想同时取件和结账,可以执行以下操作:

git获取和git签出您的branch_name

还为您创建了下图,以简化我所说的内容:

其他回答

以下是实现此目的的最佳方法:

mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard

此时,您已经拥有了远程存储库及其所有分支的完整副本(使用git分支进行验证)。如果远程存储库有自己的远程设备,则可以使用--mirror而不是--bare。

只需执行以下操作:

$ git clone git://example.com/myproject

$ cd myproject

$ git checkout branchxyz
Branch branchxyz set up to track remote branch branchxyz from origin.
Switched to a new branch 'branchxyz'

$ git pull
Already up-to-date.

$ git branch
* branchxyz
  master

$ git branch -a
* branchxyz
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branchxyz
  remotes/origin/branch123

你看,gitclonegit://example.com/myprojectt获取所有内容,甚至是分支,您只需签出它们,就可以创建本地分支。

我认为这样做很有效:

mkdir YourRepo
cd YourRepo
git init --bare .git                       # create a bare repo
git remote add origin REMOTE_URL           # add a remote
git fetch origin refs/heads/*:refs/heads/* # fetch heads
git fetch origin refs/tags/*:refs/tags/*   # fetch tags
git init                                   # reinit work tree
git checkout master                        # checkout a branch

到目前为止,这对我有效。

执行远程存储库的裸克隆,将内容保存到.git目录

git clone --bare remote-repo-url.git localdirname/.git

(使用gitclone--bare或gitinit--bare创建的裸git存储库是一个存储存储库,它没有工作目录,您无法在其中创建或修改文件。)

将目录更改为本地目录

cd localdirname

使您的git存储库可修改

git config --bool core.bare false

还原工作目录

git reset --hard

列出所有分支机构

git branch -al

好吧,当你克隆你的回购时,你有所有的分支。。。

如果你只是做git分支,它们是隐藏的。。。

所以,如果您想查看所有分支的名称,只需添加--all标志,如下所示:

gitbranch—all或gitbranch-a

如果你只是到分行结账,你就能得到你所需要的一切。

但是,如果你克隆后,其他人创建了分支,该怎么办?

在这种情况下,只需执行以下操作:

git获取

并再次检查所有分支。。。

如果您想同时取件和结账,可以执行以下操作:

git获取和git签出您的branch_name

还为您创建了下图,以简化我所说的内容: