如何在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和分支名称
可以分两步完成
-
克隆存储库
-
git clone <http url>
-
-
结账你想要的分支
-
git checkout $BranchName
-
克隆完成后,我不得不进入git submodule update --init --recursive
来下载所有的子模块
打开cmd
cd folder_name(input克隆分支的path)只是一个命令
git clone url_of_projecturltoclone -b branch_name
- 打开Git bash shell。
- 在您要签出的文件系统中创build一个目录。
- $ mkdir Feature_develop_branch
- 将目录更改为Feature_develop_branch文件夹。
- $ cd Feature_develop_branch
- 使用外部克隆url克隆存储库。
- $ git clone https://someurl.repositoryName.git
- 克隆后,将目录更改为已创build的repositoryName。
- $ cd / repositoryName
- 检查分支。
- $ git checkout
git的克隆分支你没有公钥使用这个
git clone -b <branch> <git repo url or clone url you get from git repo>