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

zorksylar

Nothing is impossible , if distributed.

 
 
 

日志

 
 

【Git】Git学习之Working with Remotes  

2012-02-04 20:55:18|  分类: git |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
参考资料:

remote repo就是放在server端的repo

Showing Your Remotes

查看当前repo的remote server 

$ git remote -v

会列出remote的short name 和URL
如果有多个remote,就会列出所有的remote信息:

$ git remote -v
bakkdoor git://github.com/bakkdoor/grit.git
cho45 git://github.com/cho45/grit.git
defunkt git://github.com/defunkt/grit.git
koke git://github.com/koke/grit.git
origin git@github.com:mojombo/grit.git

This means we can pull contributions from any of these users pretty easily. But notice that only the origin remote is an SSH URL, so it’s the only one I can push to (we’ll cover why this is in Chapter 4).
注意:这表示能从以上的remote中pull,但是只能push到origin中,因为从origin的URL中可以看出,origin使用的SSH协议,

Adding Remote Repositories

添加一个remote repo:
git remote add [shortname] [url]

$ git remote add pb git://github.com/paulboone/ticgit.git


远程分支(remote Branch)
用(remote repo name)/(branch name)表示远程分支
origin/master

查看远程仓库信息

$ git remote show origin


远程仓库的删除和重命名

$ git remote rename source_name dest_name

$ git remote rm repo_name


从remote上clone
假设你们团队有个地址为 git.ourcompany.com 的 Git 服务器。如果你从这里clone,Git 会自动为你将此remote repo名为 origin,并下载其中所有的数据,建立一个指向它的 master 分支的指针,在本地命名为 origin/master,但你无法在本地更改其数据。接着,Git 建立一个属于你自己的本地 master 分支,始于 origin 上 master 分支相同的位置,你可以就此开始工作.
如下图:
【Git】Git学习之Working with Remotes - sylareclipse - sylar
 
如果你在本地 master 分支做了些改动,与此同时,其他人向 git.ourcompany.com 推送了他们的更新,那么服务器上的 master 分支就会向前推进,而于此同时,你在本地的提交历史正朝向不同方向发展。不过只要你不和服务器通讯,你的 origin/master 指针仍然保持原位不会移动(见下图)。
【Git】Git学习之Working with Remotes - sylareclipse - sylar
 


从remote中fetch数据

可以用下面的命令从remote repo抓取数据到本地:

$ git fetch [remte-name]

fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
可以运行 git fetch origin 来同步远程服务器上的数据到本地。该命令首先找到 origin 是哪个服务器(本例为 git.ourcompany.com),从上面获取你尚未拥有的数据,更新你本地的数据库,然后把 origin/master 的指针移到它最新的位置上(见下图)。
【Git】Git学习之Working with Remotes - sylareclipse - sylar
 


推送本地分支

$ git push (remote repo name) (local branch name):(remote branch name)

或者

$ git push (remote repo name) (local branch name)

后者默认remote branch name 和local branch name 一样

例如:

$ git push origin serverfix
Counting objects: 20, done.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (15/15), 1.74 KiB, done.
Total 15 (delta 5), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new branch] serverfix -> serverfix

接下来,当你的协作者再次从服务器上获取数据时,他们将得到一个新的远程分支 origin/serverfix:

$ git fetch origin
remote: Counting objects: 20, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 15 (delta 5), reused 0 (delta 0)
Unpacking objects: 100% (15/15), done.
From git@github.com:schacon/simplegit
* [new branch] serverfix -> origin/serverfix

值得注意的是,在 fetch 操作下载好新的远程分支之后,你仍然无法在本地编辑该远程仓库中的分支。换句话说,在本例中,你不会有一个新的 serverfix 分支,有的只是一个你无法移动的 origin/serverfix 指针

如果要把该内容合并到当前分支,可以运行 git merge origin/serverfix
如果想要一份自己的 serverfix 来开发,可以在远程分支的基础上分化出一个新的分支来:

$ git checkout -b serverfix origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"

这会切换到新建的 serverfix 本地分支,其内容同远程分支 origin/serverfix 一致,这样你就可以在里面继续开发了



跟踪远程分支(Tracking Branches)

  评论这张
 
阅读(141)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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