Git clone的行为是将远程的当前工作分支复制到本地。
有什么办法可以在不切换远程仓库的分支的情况下自己克隆一个特定的分支?
git clone -b <branch> <remote_repo>
例子。
git clone -b my-branch [email protected]:user/myproject.git
在Git 1.7.10及以后的版本中,添加--single-branch
以防止获取所有分支。例如,使用OpenCV 2.4分支。
git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
git clone --single-branch --branch <branchname> <remote-repo>
--single-branch
选项从1.7.10及以后的版本开始有效。
也请参考很多人喜欢的其他答案。
你可能还想确保你理解其中的区别。区别在于:通过调用 git clone --branch <branchname> url
,你获取的是所有的分支,并签出一个。例如,这可能意味着你的版本库有一个5kB的文档或wiki分支和5GB的数据分支。每当你想编辑你的前台页面,你可能最终会克隆5GB的数据。
再说一遍,这并不是说`git clone --branch'不是实现这一目标的方法,只是当你要求克隆一个特定的分支时,它并不总是你想实现的。
在写下面的原始答案时,git没有--单分支
选项,但为了充分满足愤怒的蜜蜂,让我们保留它。
那个被复制者严重厌恶的答案是这样的。
git init
git remote add -t refspec remotename host:/dir.git
git fetch
克隆一个分支,不需要获取其他分支。
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
git checkout -b <branch-name> <origin/branch_name>
例如我的案例:。
git branch -a
* master
origin/HEAD
origin/enum-account-number
origin/master
origin/rel_table_play
origin/sugarfield_customer_number_show_c
因此,为了在我的枚举-账户-号码分支的基础上创建一个新的分支,我的做法是:。
git checkout -b enum-account-number origin/enum-account-number
在你按下回车键后,会发生以下情况:。
Branch enum-account-number set up to track remote branch refs/remotes/origin/enum-account-number.
Switched to a new branch "enum-account-number
"