我有一个本地的名为“ skeleton”的Git存储库,用于存储项目框架。 它有几个分支,分别用于不同类型的项目:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
如果我想签出新项目的master分支,我可以做
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
一切都是我想要的。 具体来说,新的master分支指向骨架master分支,我可以推动和拉动以移动对基本项目设置的更改。
但是,如果我要克隆另一个分支,那是行不通的。 我无法理解它,所以我只拉了我想要的分支,例如rails
分支,然后默认情况下,新的存储库有一个master
分支,该master
分支可推入和拉出骨架存储库的rails
分支。
有一个好的方法去做吗? 或者,也许这不是Git想要我构造事物的方式,我当然对此持开放态度。 也许我应该有多个存储库,而Ruby on Rails框架存储库跟踪主框架存储库? 以及任何克隆Ruby on Rails骨架存储库的项目。
#1楼
从git-clone手册页 :
--single-branch
是克隆期间的朋友,请记住与--branch <branch name>
一起使用,否则仅克隆远程主HEAD(默认为master)
始终记得执行Ctrl + F5键来读取新鲜的源代码,而不是从缓存中读取源代码:-)(我很久不知道这个选项了。)
#2楼
您可以尝试漫长的方法:
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存储库。
- 将原始存储库添加为名为origin的远程站点 。
- 仅从远程调用origin提取所需的分支。
- 创建并签出一个新分支,该分支设置为跟踪刚刚克隆的源分支。
希望那会是你所追求的。
#3楼
您可以使用以下命令进行操作:
git clone -b branch_name --single-branch project_url local_folder_to_clone_in
#4楼
可以分两步完成
克隆存储库
-
git clone <http url>
-
结帐您想要的分支
-
git checkout $BranchName
-
#5楼
- 打开Git Bash外壳。
- 在文件系统中要检出的目录中创建一个目录。
- $ mkdir Feature_develop_branch
- 将目录更改为Feature_develop_branch文件夹。
- $ cd Feature_develop_branch
- 使用外部克隆URL克隆存储库。
- $ git clone https://someurl.repositoryName.git
- 克隆后,将目录更改为创建的repositoryName。
- $ cd / repositoryName
- 签出分支。
- $ git checkout
<Branch Name>
- $ git checkout
#6楼
使用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
)调用也将只下载所请求的分支。
#7楼
git clone <url> --branch <branch> --single-branch
只需输入URL和分支名称。
#8楼
打开cmd。
cd folder_name
(输入克隆分支的路径)
只需一个命令:
git clone url_of_projecturltoclone -b branch_name
#9楼
要克隆您没有公钥的Git分支,请使用以下命令:
git clone -b <branch> <Git repository URL or clone URL you get from Git repository>
#10楼
仅克隆一个分支。 这是最简单的方法:
$ git clone -b BRANCH_NAME --single-branch git@bitbucket.org:___/PROJECTNAME.git
#11楼
要克隆特定分支,可以执行以下操作:
git clone --branch yourBranchName git@yourRepository.git
#12楼
有点晚了,但是我想添加我用来解决这个问题的解决方案。 我在这里找到了解决方案。
无论如何,问题似乎是在问“如何从另一个存储库的分支开始一个新项目?”
为此,我使用的解决方案是首先在github或任何地方创建一个新的仓库。 这将用作新项目的仓库。
在本地计算机上,导航到具有要用作新项目模板的分支的项目。
运行命令:
git push https://github.com/accountname/new-repo.git +old_branch:master
这样做是将old_branch推送到new-repo,并将其设置为新repo的主分支。
然后,您只需要将新存储库克隆到新项目的本地目录中,并在旧分支处启动一个新项目即可。
#13楼
让我们以烧瓶回购为例。 除母版外,它还有3个分支。 让我们签出1.1.x远程分支
克隆git repo
git clone https://github.com/pallets/flask
cd进入仓库。
cd flask
获取远程分支1.1.x
git fetch origin 1.1.x
结帐分支
git checkout 1.1.x
您将切换到分支1.1.x,它将跟踪远程1.1.x分支。
#14楼
一种方法是执行以下操作。
git clone user@git-server:project_name.git -b branch_name /your/folder
其中branch_name
是您选择的分支,而“ / your / folder”是该分支的目标文件夹。 的确,这将带来其他分支机构,使您有机会来回合并。 现在,从Git 1.7.10开始,您现在可以执行此操作
git clone user@git-server:project_name.git -b branch_name --single-branch /your/folder
#15楼
注意: 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
克里斯评论道:
使缺少的分支反转的神奇路线
--single-branch
是(git v2.1.4):
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --unshallow