问:
这个问题在这里已经有了答案:How do I clone a single branch in Git? (26 个回答) 8 年前关闭。
Git clone 会将远程分支克隆到本地。
有没有什么方法可以自己克隆一个特定的分支,而无需在远程存储库上切换分支?
答1:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
git clone -b
例子:
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
pierr:我不确定这是否回答了上面给出的问题的描述,但它确实回答了实际问题——如何克隆存储库的特定分支。我对此投了赞成票,因为这是我在访问此页面时在谷歌上搜索的答案。
这行得通。它将新 HEAD 指向指定的分支,而不是 myproject 中的 HEAD-branch。但是,它仍然获取所有分支。请参阅@edmar-miyake 的回答。
如果您将 --depth X 添加到命令,它会回答问题的描述。如果这样做,它将仅克隆指定的分支及其最后的内容。
谢谢--single-branch;撰写本文时,git 2.5 已经发布。不关心旧版本。
@jorge 为什么 -b 选项需要单独的 --single-branch 标志? -b 单独克隆所有分支吗?
答2:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
git clone --single-branch --branch
–single-branch 选项从版本 1.7.10 及更高版本开始有效。
另请参阅许多人喜欢的other answer。
您可能还想确保您了解其中的区别。不同之处在于:通过调用 git clone --branch url,您将获取 所有 分支并签出一个。例如,这可能意味着您的存储库有一个 5kB 的文档或 wiki 分支和 5GB 的数据分支。每当你想编辑你的首页时,你最终可能会克隆 5GB 的数据。
同样,这并不是说 git clone --branch 不是实现该目标的方法,只是当您询问克隆特定分支时,它并非总是您想要完成的。
评论不用于扩展讨论;此对话已moved to chat。
请原谅我,你确定你所说的“你正在获取所有......”的部分吗?我在某处读到 git fetch 实际上并没有“复制”任何文件,它只是获取元数据和有关更改的信息。所以它应该是相对轻量级的......也许你从字面上使用了“fetch”这个词,而不是来自 git 词汇表?
@aderchox,不,它实际上会获取所有内容。更新时它传输的东西非常聪明,但是当您克隆一个大存储库时,它实际上会提取历史记录,除非您明确告诉它不要这样做。但它仍然会获取分支的尖端。 git fetch 没有 - 它不签出文件,但这与传输无关。
通常您还需要 --depth 1,以便您只获得最新的。这可以节省大量的下载时间。
git clone -b branch_name --single-branch 'repo_url'
答3:
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
这是一个非常简单的方法:)
克隆存储库
git clone
列出所有分支
git branch -a
签出您想要的分支
git checkout
这将工作目录切换到正确的分支,但我无法推送我所做的任何更改,因为我不是“当前在分支上”。
这是我的解决方案,因为我已经克隆了“master”。我不知道我可以简单地“结帐”一个远程分支。
这可能是正确的方法;最佳实践
这种方式不会只克隆选择的分支。这个答案似乎更好:stackoverflow.com/a/7349740/3075243。例如,如果一个 repo 有许多足够大的分支,我们不想克隆每个分支。
很干脆的回答。您还需要做的另一件事是: 在这一步之后:“git checkout ” 这样做: git branch --set-upstream-to=origin/ 谢谢。
答4:
huntsbot.com – 高效赚钱,自由工作
要克隆一个分支而不获取其他分支:
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH-f origin $REMOTE_REPO
git checkout $BRANCH
很好的解决方案。在较旧的 git(我有 1.5.5.6)上,结帐前可能需要一个 git branch --track $BRANCH origin/$BRANCH 。
有效,并且只获取分支上存在的那些标签,这正是我想要的。 (我实际上想获取 多个 分支,但只获取选定的分支;为此,只需像这里一样重复 remote add 和 checkout,然后 git remote rm origin 即可清理。)
在另一个项目中浅层合并 git repo 的特定标签的完美解决方案。建议在 git 远程命令中省略 -f,然后使用 git fetch --depth=1 $BRANCH $TAG,然后使用 git checkout FETCH_HEAD。 init 是无害的,更改标签会自动更新签出的代码。
与 Michael Krelin 的(3 步)答案不同,这个答案实际上对我有用(git 1.7.9.5)
经过很多失败后,这段代码对我有用.. git version 2.9.2
答5:
huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求
git checkout -b
例如在我的情况下:
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
点击返回后会发生以下情况:
Branchenum-account-number set up totrack remote branch refs/remotes/origin/enum-account-number.
Switchedtoanew branch "enum-account-number"
请注意,首先 git pull origin 可能很有用,以便 git branch -a 可以列出所有新的(当前)远程分支。
好点子。不过,git fetch 可能更好,这样就不会发生自动合并。
答6:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
使用该名称在本地系统上创建一个分支。例如,假设您想要获得名为 branch-05142011 的分支
git branch branch-05142011 origin/branch-05142011
它会给你一个消息:
$ git checkout --track origin/branch-05142011Branch branch-05142011 set up totrack remote branch refs/remotes/origin/branch-05142011.Switchedtoanew branch "branch-05142011"
现在只需检查下面的分支,您就有了代码
git checkout branch-05142011
这也可以: git fetch origin [remote-branch]:[new-local-branch]
做对了。 Miyake(下)展示了添加遥控器时的操作方法。
那应该说,“PlanetUnknown 说得对。”
@PlanetUnknown 感谢git fetch origin [remote-branch]:[new-local-branch],我喜欢它!
git fetch origin [remote-branch]:[new-local-branch] 获胜
答7:
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
git --branch
但是 bash 完成没有得到这个键:–branch
原文链接:https://www.huntsbot.com/qa/6LDJ/how-do-i-clone-a-specific-git-branch?lang=zh_CN&from=csdn
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
版权归原作者 HuntsBot 所有, 如有侵权,请联系我们删除。