注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

亨利的3D幻想世界

 
 
 

日志

 
 
关于我

一个在奋斗中的码农

网易考拉推荐

git clone url all branches git克隆项目所有的分支  

2013-10-14 19:30:51|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

命令git clone URL

git clone 命令官网文档


Clones a repository into a newly created directory, creates remote-tracking branches for each branch in the cloned repository (visible using git branch -r), and creates and checks out an initial branch that is forked from the cloned repository's currently active branch.

克隆一个仓库到一个新建的目录里,对在已经克隆过的仓库里的每一个分支创建远程跟踪分支(用git branch -r命令可以列出所有远程分支),并且创建和检出一个初始化的分支,这个分支是从克隆过的仓库的当前激活分支上分出(forked译为分出不知道是否好)的。(翻译得有些生硬啊)



通俗的说,如果运行git clone URL,不带其他参数,Git 会自动为你将此远程仓库命名为origin,并下载其中所有的数据,建立一个指向远程仓库上master 分支的指针,在本地命名为origin/master,但你无法在本地更改其数据。接着,Git 建立一个属于你自己的本地master 分支,始于origin上master 分支相同的位置,你可以就此开始工作。

 

也就是克隆所有数据之后,创建了一个本地master分支,并检出这个分支(一开始就是在master分支上工作),并且本地仓库master分支和远程仓库的master分支(命名为origin/master)关联起来了。



问题提出

 

git clone URL

 

执行完了之后,默认只会克隆master分支,并建立与远程仓库关联的本地仓库master分支的关联关系,如果远程仓库有很多分支,是不会拷贝的。如何克隆远程仓库的所有的分支?

 

(这种情况在多人协调项目和克隆流行开源项目中常常遇见)

解决步骤

 

在运行git clone URL之后

 

步骤1.

在git命令行窗口中键入

--------------------------------------------------------------------------------------------------------------------------------------------------

for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do

git branch --track ${branch##*/} $branch

done

-----------------------------------------------------------------------------------------------------------------

 

命令解释:

命令会创建除了master分支之外,与远程分支关联的本地分支。

其中【git branche ?track 本地分支 远程分支】执行之后,实际上就已经把远程仓库上的远程分支数据拉下来并合并到本地相关联的分支上去了。因为git branche ?track默认会自动引发git pull的操作。

 

步骤2.

再键入

----------------------------------

git fetch --all

git pull --all

-------------------------------

 

命令解释:

只要是远程仓库这个时刻是一个人在操作的,即远程仓库数据是最新的,步骤2的效果还是和步骤1的效果一样。

情景再现

 

一个名为test2的远程仓库项目有2个分支,即master分支和my01分支。master 分支上有1个commit,my01分支上有2个commit。如何克隆所有分支?

 

图示1

 

master 分支上有1个commit

图示2

my01分支上有2个commit

 

操作

图示3

 

图示4

 

参考文档

  1. http://stackoverflow.com/questions/67699/how-do-i-clone-all-remote-branches-with-git/72156#72156
  2. 《Pro Git中文版》P58
  评论这张
 
阅读(1371)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018