Git学习笔记(二) · 非典型性程序猿
远程库的使用
前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本。这里我们以 Github为例。Github是一个开放的git远程服务器,首先我们先注册一个github账户,如何注册就不在这里。说了绑定本地版本库与Github远程库有两种方式,一种是以ssh协议连接,在这方式下我们需要先绑定一个ssh key,这个在下面会说。还有一种是https协议,但是使用https速度慢会比慢,而且每次推送(push)都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
使用Github托管自己的代码库
如果你已经注册完你的Github账户,新增需要在生成一个ssh key,这个key用于验证你的身份是该版本库的创立者,也就是如上面说的允许你使用ssh方式连接Github上的远程库。执行如下命令生成ssh key:
|
|
注意把youremail@example.com改为你的邮箱。 命令执行过程只能够会要求你设置密码,这个可选的,如果设置了密码,后面每次提交也许输入密码。最后你可以在用户目录下找到.ssh文件夹(我的是C:UsersJustin.ssh)里面有id_rsa和id_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上建立一个名为gitstudy的Repository:


GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
Github的Repository分为public 和 private 两种。 public是公共的也就是谁都能查看,如果是商业项目的话还是使用private的吧,不过github要收保护费。
现在,我们根据GitHub的提示,在本地的仓库的目录,也就前面用到的gitStudy下运行命令:
|
|
其中xiongqi215更换成你的github账户。 另外origin是远程库在你本地的名字,这个git默认的叫法,一般情况下不需要修改。
下一步,就可以把本地库的所有内容推送到远程库上,使用命令
把本地库的内容推送到远程,用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:
|
|
同样xiongqi215更换成你的github账户。
现在,我们的已经在github建立了一个远程库,同时这个库被clone到了多台电脑上。
这时假如A电脑push了一些修改到远程库中,B电脑需要更新到这部分修改,那么可以使用如下命令:
|
|

小结
- 要绑定本地库与远程库,使用命令
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学习笔记(二) · 非典型性程序猿的更多相关文章
- Git学习笔记 (二)
Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...
- Git学习笔记(二) 远程仓库及分支
添加远程仓库(以GitHub为例) 所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的.远程仓库的目的就是保证7*24小时开启状态.GitHub是一个很好的公共Git远程仓库(后面 ...
- git学习笔记二-branch分支
1.刚创建好的空仓库的分支是空的,即使是master分支也是不存在的.master分支是不能通过git branch 来创建的,只有在完成第一次提交才会自动创建,有git自动完成master分子的创建 ...
- Git学习笔记二--工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 简单理解: 我们使用mkdir Git在d盘下创建的文件夹,就是工作区,我们编辑readme.txt文件就是在工作区下完成的: gi ...
- Mybatis学习笔记(二) —— mybatis入门程序
一.mybatis下载 mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases 下载完后的目录结构: 二. ...
- Go学习笔记(二):编写 HelloWorld 程序
//Hello.go代码 package main import "fmt" func main(){ fmt.Printf("Hello, world!This is ...
- 微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...
- python3.4学习笔记(二) 类型判断,异常处理,终止程序
python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
随机推荐
- Office文档WEB端在线浏览(转换成Html)
最近在做了一个项目,要求是对Office文档在线预览.下面给大家分享一下我的方法. 1.第一种方法(不建议使用)我是在网上搜了一个利用COM组件对office文档进行转换,但是此方法必须要装Offic ...
- python,pandas常用函数
一.rename,更改df的列名和行索引 df=pd.DataFrame(np.arange(,).reshape(,)) print(df) print(type(df)) 结果为: <cla ...
- 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第五天】
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...
- c语言中,为什么以下程序直接按”Enter“也就是回车程序不结束?
/************************************************************************* > File Name: system.c ...
- Hibernate基础数据类型
Java数据类型 Hibernate数据类型 byte,java.lang.Byte byte short,java.lang.Short short int,java.lang.Integer in ...
- servletHomeWork
2. http全称是什么? 超文本传输协议(HTTP, HyperText Transfer Protocol)是互联网上应用为最广泛的一种网络协议. 3.http协议是无状态的协议是什么意思?请说明 ...
- AC和路由器
无线AC控制器是一种网络设备,比如我曾接触过的丰润达的AC100和AC180等,用它们可以来集中控制和管理无线AP,比如下发配置.修改相关配置参数.射频智能管理.接入安全控制等. 路由器是一种连接多个 ...
- 如何将EXCEL两列比较后不重复的数据复制到另一列上
Q1:我有两列数据,需要做重复性比较,比较完后需要将不重复的数据提取出来自成一列,请问该如何操作? 假如你要比较A列与B列数据是否重复,应该有三种结果(即AB皆有,A有B无,B有A无),可在C列存放A ...
- 《C Prime Plus》第八节笔记
第八节 字符输入/输出和输入验证 8.1 单字符I/O:getchar()和putchar() getchar()和putchar()包含在stdio.h头文件中 8.2 缓冲区 无缓冲输入: 直接回 ...
- [LC] 15. 3Sum
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find ...