远程库的使用

前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本。这里我们以 Github为例。Github是一个开放的git远程服务器,首先我们先注册一个github账户,如何注册就不在这里。说了绑定本地版本库与Github远程库有两种方式,一种是以ssh协议连接,在这方式下我们需要先绑定一个ssh key,这个在下面会说。还有一种是https协议,但是使用https速度慢会比慢,而且每次推送(push)都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

使用Github托管自己的代码库

如果你已经注册完你的Github账户,新增需要在生成一个ssh key,这个key用于验证你的身份是该版本库的创立者,也就是如上面说的允许你使用ssh方式连接Github上的远程库。执行如下命令生成ssh key:

1
$ ssh-keygen -t rsa -C "youremail@example.com"

注意把youremail@example.com改为你的邮箱。 命令执行过程只能够会要求你设置密码,这个可选的,如果设置了密码,后面每次提交也许输入密码。最后你可以在用户目录下找到.ssh文件夹(我的是C:UsersJustin.ssh)里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
接下来我们需要绑定这个key到你的github账户中:

填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”,你就应该看到已经添加的Key。

当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

接下来我们在Github上建立一个名为gitstudyRepository



GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
Github的Repository分为public 和 private 两种。 public是公共的也就是谁都能查看,如果是商业项目的话还是使用private的吧,不过github要收保护费。
现在,我们根据GitHub的提示,在本地的仓库的目录,也就前面用到的gitStudy下运行命令:

1
git remote add origin git@github.com:xiongqi215/gitstudy.git

其中xiongqi215更换成你的github账户。 另外origin是远程库在你本地的名字,这个git默认的叫法,一般情况下不需要修改。
下一步,就可以把本地库的所有内容推送到远程库上,使用命令

大专栏  Git学习笔记(二) · 非典型性程序猿ass="highlight bash">
1
git push -u origin master

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,以后就不需要加上这个参数了:
github push
如果前面建立ssh key的时候你设置了密码,那么push过程中你也会看到Enter passphrase for key '/c/Users/Justin/.ssh/id_rsa':的提示,这时你需输入之前设置的密码。
成功push后,查看Github上的gitstudy库,发现所有文件已经推送上去了,并且是最新的版本。

从github克隆代码库

现在,假设我们换了一台电脑,或者我们需要克隆别人在Github上的某个库时,我们需要使用git clone:

1
git clone git@github.com:xiongqi215/gitstudy.git

同样xiongqi215更换成你的github账户。

现在,我们的已经在github建立了一个远程库,同时这个库被clone到了多台电脑上。
这时假如A电脑push了一些修改到远程库中,B电脑需要更新到这部分修改,那么可以使用如下命令:

1
git pull origin master

小结

  • 要绑定本地库与远程库,使用命令git remote add origin git@server-name:path/repo-name.git
  • 绑定后后,使用命令git push -u origin master第一次推送master分支的所有内容。
  • 以后,只要使用git push origin master推送最新修改。
  • 使用git clone git@server-name:path/repo-name.git命令克隆一个远程库到本地。
  • 多台电脑可以使用 git pull origin master抓取相互提交到远程库中的最新修改。

Git是个非常高效的版本控制工具。分布式的、基于修改的管理方式非常适合多人协调完成开发工作。

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

这次学习笔记还有很多内容没有涉及,本人还在学习当中。后面陆续补充如分支管理冲突处理等内容。这里再提供一份命令手册供大家下载

其它详细教程

Git学习笔记(二) · 非典型性程序猿的更多相关文章

  1. Git学习笔记 (二)

    Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...

  2. Git学习笔记(二) 远程仓库及分支

    添加远程仓库(以GitHub为例) 所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的.远程仓库的目的就是保证7*24小时开启状态.GitHub是一个很好的公共Git远程仓库(后面 ...

  3. git学习笔记二-branch分支

    1.刚创建好的空仓库的分支是空的,即使是master分支也是不存在的.master分支是不能通过git branch 来创建的,只有在完成第一次提交才会自动创建,有git自动完成master分子的创建 ...

  4. Git学习笔记二--工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 简单理解: 我们使用mkdir Git在d盘下创建的文件夹,就是工作区,我们编辑readme.txt文件就是在工作区下完成的: gi ...

  5. Mybatis学习笔记(二) —— mybatis入门程序

    一.mybatis下载 mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases 下载完后的目录结构: 二. ...

  6. Go学习笔记(二):编写 HelloWorld 程序

    //Hello.go代码 package main import "fmt" func main(){ fmt.Printf("Hello, world!This is ...

  7. 微信小程序学习笔记二 数据绑定 + 事件绑定

    微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...

  8. python3.4学习笔记(二) 类型判断,异常处理,终止程序

    python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...

  9. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. Django框架(六):模型(二) 字段查询、查询集

    1. 字段查询 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询. 函数名 功能 返回值 说明 get 返回表中满足条件的一条且只能有一条数据. 返回值是一个模型类对象. ...

  2. framebuffer 知识点

    设备文件是在/dev/目录下设备文件有主设备号,次设备号.当操作设备文件, 系统会根据设备文件的设备号找到相应的设备驱动(驱动在内核注册时已指定使用的设备号),并调用相应的功能.  open ---& ...

  3. hibernate 持久化对象 save

    hibernate 持久化对象 save new出来的user对象是游离状态的对象,执行session.save()方法保存后,user对象就变为持久化了,持久化的对象跟数据库表双向绑定的意思, 对象 ...

  4. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2

    1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...

  5. 基础篇八:log配置

    第一:首选查看有哪些日志文件 cd /etc/nginx/ cat nginx.conf cd /var/log/nginx/

  6. hdu 2586 How far away ?(LCA模板)(倍增法)

    在dfs的过程中维护三个数组: deep[i],表示i点在树中的深度: grand[x][i],表示x的第2^i个祖先的节点编号: dis[x][i],表示x到它2^i祖 #include<io ...

  7. Image.FromStream(ms) 提示参数无效

    说明ms有问题,首先确保有读到数据,这种情况是保存到库的时候出错的. 原来你可能是这样写的: MemoryStream stream = new MemoryStream();PictureBox1. ...

  8. AppCompatActivity 透明背景

    <!-- 背景透明样式 --> <style name="AppTheme.transparent" parent="Theme.AppCompat.L ...

  9. 创想变现:斯坦福设计创新课堂ME310分享(上篇)

    编者按:今年6月,微软亚洲研究院人机交互组研究员顾嘉唯,在美国斯坦福大学担任了d-School的ME310设计课程的项目评审.该课程是斯坦福大学的全球联合新产品设计创新课程,学习方式以小组为单位,每个 ...

  10. BZOJ 2318: Spoj4060 game with probability Problem (概率dp)(博弈论)

    2318: Spoj4060 game with probability Problem Description Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果 ...