【发布时间】:2010-12-27 00:51:04
【问题描述】:
Git clone 会将远程分支克隆到本地。
有没有什么方法可以自己克隆一个特定的分支,而不需要在远程仓库切换分支?
【问题讨论】:
标签: git git-branch git-clone
Git clone 会将远程分支克隆到本地。
有没有什么方法可以自己克隆一个特定的分支,而不需要在远程仓库切换分支?
【问题讨论】:
标签: git git-branch git-clone
git clone --single-branch --branch <branchname> <remote-repo>
--single-branch 选项从 1.7.10 及更高版本开始有效。
另请参阅许多人喜欢的other answer。
您可能还想确保您了解其中的区别。不同之处在于:通过调用git clone --branch <branchname> url,您将获取所有 分支并签出一个。例如,这可能意味着您的存储库有一个 5kB 的文档或 wiki 分支和 5GB 的数据分支。每当您想编辑您的首页时,您最终可能会克隆 5GB 的数据。
再次重申,这并不是说 git clone --branch 不是实现这一目标的方法,只是当您询问克隆特定分支时,它并非总是您想要完成的目标.
【讨论】:
git fetch 没有 - 它不签出文件,但这与传输无关。
--depth 1,以便您只获得最新的。这样可以节省大量的下载时间。
git --branch <branchname> <url>
但是 bash 完成没有得到这个密钥:--branch
【讨论】:
使用该名称在本地系统上创建一个分支。例如说你想得到名为branch-05142011的分支
git branch branch-05142011 origin/branch-05142011
它会给你一个消息:
$ git checkout --track origin/branch-05142011
Branch branch-05142011 set up to track remote branch refs/remotes/origin/branch-05142011.
Switched to a new branch "branch-05142011"
现在只需检查下面的分支,您就有了代码
git checkout branch-05142011
【讨论】:
git fetch origin [remote-branch]:[new-local-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
所以要根据我的 enum-account-number 分支创建一个新分支:
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"
【讨论】:
git pull origin 可能很有用,以便git branch -a 可以列出所有新的(当前)远程分支。
git fetch 可能会更好,这样就不会发生自动合并。
git clone -b <branch> <remote_repo>
例子:
git clone -b my-branch git@github.com: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
【讨论】:
--single-branch;撰写本文时,git 2.5 已经发布。不关心旧版本。
-b 选项需要单独的--single-branch 标志? -b 单独克隆所有分支吗?
要克隆一个分支而不获取其他分支:
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
【讨论】:
remote add 和checkout 就足够了,然后git remote rm origin 进行清理。)
-f,然后使用 git fetch --depth=1 $BRANCH $TAG,然后使用 git checkout FETCH_HEAD。 init 是无害的,更改标签会自动更新签出的代码。
git version 2.9.2
这是一个非常简单的方法:)
克隆存储库
git clone <repository_url>
列出所有分支
git branch -a
签出你想要的分支
git checkout <name_of_branch>
【讨论】: