How do I clone a single branch in Git?
我有一个名为"骨架"的本地Git存储库,用于存储项目骨架。它有几个分支,适用于不同类型的项目:
1 2 3 4 5 | casey@agave [~/Projects/skeleton] git branch * master rails c c++ |
如果我想签出一个新项目的主分支,我可以
1 2 | casey@agave [~/Projects] git clone skeleton new Initialized empty Git repository in /Users/casey/Projects/new/.git/ |
号
一切都是我想要的。具体来说,新的主分支指向骨架主分支,我可以推拉以移动对基本项目设置的更改。
但是,如果我想克隆另一个分支,则不起作用。我无法得到它,所以我只能拉我想要的分支,例如
有没有一个好的方法来做这件事?或者,也许这不是Git想要我构建东西的方式,我当然愿意这样做。也许我应该有多个存储库,RubyonRails骨架存储库跟踪主骨架存储库?以及克隆RubyonRails骨架存储库的任何单个项目。
注意:git1.7.10(2012年4月)实际上只允许克隆一个分支:
1 2 3 4 5 | # clone only the remote primary HEAD (default: origin/master) git clone --single-branch as in: git clone <url> --branch <branch> --single-branch [<folder>] |
你可以在
1 2 3 | test_expect_success 'single branch clone' ' git clone --single-branch"file://$(pwd)/." singlebranch ' |
。
托布评论说:
This is implicit when doing a shallow clone.
This makesgit clone --depth 1 the easiest way to save bandwidth.
号
而且自Git1.9.0(2014年2月)以来,Shallow Clones支持数据传输(push/pull),因此该选项现在更加有用。更多内容见"EDOCX1(浅克隆)是否比它所显示的更有用?".
"撤消"浅克隆在"将浅克隆转换为完全克隆"(Git 1.8.3+)中有详细说明。
1 2 3 4 5 6 | # 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 |
。
正如克里斯的评论:
the magic line for getting missing branches to reverse
--single-branch is (git v2.1.4):
号
1 2 | git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/* git fetch --unshallow |
一种方法是执行以下操作。
1 | git clone user@git-server:project_name.git -b branch_name /your/folder |
其中,
1 | git clone user@git-server:project_name.git -b branch_name --single-branch /your/folder |
。
使用Git版本1.7.3.1(在Windows上),我要做的是(
1 2 3 4 5 | mkdir $BRANCH cd $BRANCH git init git remote add -t $BRANCH -f origin $REMOTE_REPO git checkout $BRANCH |
号
这种方法的优点是,随后的
你可以尝试一下长途跋涉:
1 2 3 4 5 6 | 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 |
它的作用是:
- 创建并初始化一个空的Git存储库。
- 将原始存储库添加为远程源站。
- 只从称为源站的远程获取所需的分支。
- 创建并签出一个新分支,该分支设置为跟踪刚刚克隆的源分支。
希望这会像你所追求的那样。
您可以使用以下命令执行此操作:
1 | git clone -b branch_name --single-branch project_url local_folder_to_clone_in |
。
从Git克隆手册页:
始终记住执行ctrl+f5以读取新的源,而不是从缓存读取源:—)(我很长时间不知道这个选项。)
1 | git clone <url> --branch <branch> --single-branch |
只需输入URL和分支名称。
只克隆一个分支。这是最简单的方法:
1 | $ git clone -b BRANCH_NAME --single-branch [email protected]:___/PROJECTNAME.git |
号
要克隆特定分支,可以执行以下操作:
埃多克斯1〔13〕
要克隆没有公钥的Git分支,请使用以下命令:
1 | git clone -b <branch> <Git repository URL or clone URL you get from Git repository> |
号
有点晚了,但我想添加我用来解决这个问题的解决方案。我在这里找到了解决方案。
无论如何,这个问题似乎是在问"如何从另一个回购的分支机构启动一个新项目?"
为此,我使用的解决方案将是首先在Github或任何地方创建一个新的回购。这将作为新项目的报告。
在本地计算机上,导航到具有要用作新项目模板的分支的项目。
运行命令:
1 | git push https://github.com/accountname/new-repo.git +old_branch:master |
号
这样做的目的是将旧的回购分支推到新的回购,使其成为新回购的主分支。
然后,您只需将新的repo克隆到新项目的本地目录中,就可以在旧的分支开始新的项目。
打开命令。
只有一个命令:
1 | git clone url_of_projecturltoclone -b branch_name |
。
可以分两步完成
克隆存储库
- 埃多克斯1〔9〕
签出你想要的分支
- 埃多克斯1〔10〕
- $mkdir功能开发分支
- $CD功能开发分支
- $git克隆https://someurl.repositoryname.git
- $cd/存储库名称
- $git结帐
。