Scu*_*cud 2804 git git-clone git-branch
Git clone会将远程当前工作分支复制到本地.
有没有办法自己克隆一个特定的分支而无需在远程存储库上切换分支?
Jor*_*ona 7546
git clone -b <branch> <remote_repo>
Run Code Online (Sandbox Code Playgroud)
例:
git clone -b my-branch git@github.com:user/myproject.git
Run Code Online (Sandbox Code Playgroud)
使用Git 1.7.10及更高版本,添加--single-branch以防止获取所有分支.例如,使用OpenCV 2.4分支:
git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Run Code Online (Sandbox Code Playgroud)
Mic*_*ker 1055
请参阅许多人喜欢的其他答案.
与大多数愤怒的评论者和贬低者不同,您可能还想确保理解其中的差异.不同之处在于:通过调用--single-branch你获取所有分支并检出一个分支.例如,这可能意味着您的存储库具有5kB文档或wiki分支以及5GB数据分支.每当您想要编辑首页时,最终可能会克隆5GB的数据.
同样,这并不是说git clone --branch <branchname> url不是实现这一目标的方式,只是当你要求克隆一个特定的分支时,它并不总是你想要完成的.
我今天要写的答案,以及今天的git将是
git clone --single-branch --branch <branchname> <remote-repo>
Run Code Online (Sandbox Code Playgroud)
在撰写下面的原始答案时,git别无选择git clone --branch,但让我们保留它以让愤怒的蜜蜂完全满意.
copypasters如此严重不喜欢的答案是这样的:
git init
git remote add -t refspec remotename host:/dir.git
git fetch
Run Code Online (Sandbox Code Playgroud)
sup*_*cal 262
这是一个非常简单的方法:)
克隆存储库
git clone <repository_url>
Run Code Online (Sandbox Code Playgroud)
列出所有分支
git branch -a
Run Code Online (Sandbox Code Playgroud)
检查您想要的分支
git checkout <name_of_branch>
Run Code Online (Sandbox Code Playgroud)
Edm*_*ake 245
要在不获取其他分支的情况下克隆分支:
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
Run Code Online (Sandbox Code Playgroud)
dki*_*zer 95
git checkout -b <branch-name> <origin/branch_name>
Run Code Online (Sandbox Code Playgroud)
例如在我的情况下:
git branch -a
* master
origin/HEAD
origin/enum-account-number
origin/master
origin/rel_table_play
origin/sugarfield_customer_number_show_c
Run Code Online (Sandbox Code Playgroud)
所以要根据我的enum-account-number分支创建一个新的分支,我做:
git checkout -b enum-account-number origin/enum-account-number
Run Code Online (Sandbox Code Playgroud)
点击返回后,会发生以下情况:
Branch enum-account-number set up to track remote branch refs/remotes/origin/enum-account-number.
Switched to a new branch "enum-account-number
Run Code Online (Sandbox Code Playgroud)
"
Pla*_*own 27
使用该名称在本地系统上创建分支.比如说你想得到一个名为"branch-05142011"的分支
git branch branch-05142011 origin/branch-05142011
它会给你一条消息 - "Branch branch-05142011设置为从原点跟踪远程分支分支-05142011."
现在只需检查下面的分支,你就有了代码 -
git checkout branch-05142011
小智 20
git --branch <branchname> <url>
Run Code Online (Sandbox Code Playgroud)
但是bash完成不会得到这个关键: --branch
请享用.