如何在git中克隆一个分支?

我有一个名为“skeleton”的本地git仓库,用于存储项目框架。 它有几个分支,用于不同types的项目:

casey@agave [~/Projects/skeleton] git branch * master rails c c++ 

如果我想查看一个新项目的主分支,我可以做

 casey@agave [~/Projects] git clone skeleton new Initialized empty Git repository in /Users/casey/Projects/new/.git/ 

而一切都是我想要的。 具体来说,新的主分支指向骨架主分支,我可以推拉移动到基本项目设置的更改。

但是,如果我想克隆另一个分支,什么都行不通。 我无法得到它,所以我只拉我想要的分支,例如轨道分支,然后新的回购有一个'主'分支推动和从骨架回购的'轨'分支拉,默认情况下。

有这样一个好方法吗? 或者,也许这不是git要我去组织的方式,我当然可以这么做。 也许我应该有多个回购,跟踪骨架回购跟踪主骨架回购? 和任何个人项目克隆铁路骨架回购。

任何想法和build议表示赞赏!

注意: git1.7.10 (2012年4月)实际上允许你克隆一个分支

 # clone only the remote primary HEAD (default: origin/master) git clone --single-branch as in: git clone <url> --branch <branch> --single-branch [<folder>] 

你可以在t5500-fetch-pack.sh看到它:

 test_expect_success 'single branch clone' ' git clone --single-branch "file://$(pwd)/." singlebranch ' 

东武 评论说:

这是隐式的时候做一个浅层克隆。
这使得git clone --depth 1是最简单的方法来节省带宽。

自Git 1.9.0(2014年2月)以来,浅层克隆支持数据传输(推/拉),所以现在选项更加有用。
在“ git clone --depth 1 (浅型克隆)比它更有用吗? ”中查看更多内容。


在“ 将浅层克隆转换为完整克隆 ”(git 1.8.3+)中详细说明了“撤消”浅层克隆。

 # unshallow the current branch git fetch --unshallow # for getting back all the branches (see Peter Cordes' comment) git config remote.origin.fetch refs/heads/*:refs/remotes/origin/* git fetch --unshallow 

正如Chris所言:

(#)(#)(#)(#)(#)(#)错误的分支,以反向--single-branch的魔术线是(git v2.1.4):

 git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/* git fetch --unshallow 

一种方法是执行以下操作

 git clone user@git-server:project_name.git -b branch_name /your/folder 

其中,branch_name是您select的分支,“/ your / folder”是该分支的目标文件夹。 这确实会使其他分支机构给你机会来回合并。 现在,从GIT 1.7.10开始,你现在可以做到这一点

 git clone user@git-server:project_name.git -b branch_name --single-branch /your/folder 

使用git版本1.7.3.1(在Windows上),这是我做的( $BRANCH是我想要签出的分支的名称, $REMOTE_REPO是我想从中克隆的远程存储库的URL):

 mkdir $BRANCH cd $BRANCH git init git remote add -t $BRANCH -f origin $REMOTE_REPO git checkout $BRANCH 

这种方法的优点是,随后的git pull (或git fetch )调用也将下载所请求的分支。

你可以尝试一下冗长的方式:

 mkdir newrepo.git cd newrepo.git git init git remote add origin file:///path/to/original git fetch origin branchiwant:refs/remotes/origin/branchiwant git checkout -b branchiwant --track origin/branchiwant 

这是做什么的:

  • 创build并初始化空的git存储库。
  • 将原始存储库添加为远程调用来源。
  • 从远程调用的原点获取您需要的分支。
  • 创build并签出一个新的brach,用于跟踪刚刚克隆的源分支。

希望这将是像你之后的东西。

从git-clone手册页

--single-branch是克隆过程中的朋友
请记住使用 – --branch <branch name>或者只有远程主HEAD将被克隆(默认为主)

总是记得做CTRL + F5来读新鲜的源代码,而不是从caching中读取:-)
(我没有这么长时间不知道这个选项)

你可以使用下面的命令来完成它:

 git clone -b branch_name --single-branch project_url local_folder_to_clone_in 
 git clone <url> --branch <branch> --single-branch 

只需将url和分支名称

可以分两步完成

  1. 克隆存储库

    • git clone <http url>
  2. 结账你想要的分支

    • git checkout $BranchName

克隆完成后,我不得不进入git submodule update --init --recursive来下载所有的子模块

打开cmd
cd folder_name(input克隆分支的path)只是一个命令

 git clone url_of_projecturltoclone -b branch_name 
  1. 打开Git bash shell。
  2. 在您要签出的文件系统中创build一个目录。
    • $ mkdir Feature_develop_branch
  3. 将目录更改为Feature_develop_branch文件夹。
    • $ cd Feature_develop_branch
  4. 使用外部克隆url克隆存储库。
    • $ git clone https://someurl.repositoryName.git
  5. 克隆后,将目录更改为已创build的repositoryName。
    • $ cd / repositoryName
  6. 检查分支。
    • $ git checkout

git的克隆分支你没有公钥使用这个

 git clone -b <branch> <git repo url or clone url you get from git repo>