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 ...
随机推荐
- 追踪tracking
追踪 追踪部分的主要思路是在当前帧和(局部)地图之间寻找尽可能多的对应关系,来优化当前帧的位姿. 作者在追踪这部分主要用了几种模型:运动模型(Tracking with motion model).关 ...
- Linux Man手册的使用示例
转载自:https://blog.csdn.net/ac_dao_di/article/details/54718710 Linux的命令非常多,很多人在学一个命令时,首先想到的是使用百度或者谷歌,或 ...
- tensorflow函数解析: tf.Session() 和tf.InteractiveSession()
链接如下: http://stackoverflow.com/questions/41791469/difference-between-tf-session-and-tf-interactivese ...
- 2019深圳Android千人开发者大会【NEW·无界】
报名地址:https://www.hdb.com/dis/mjcsegnslu 安卓巴士技术社区是中国领先的安卓开发者社区,现已聚集超过85万开发者,数年来一直致力于IT从业者的知识分享服务. 安卓巴 ...
- intellij debug模式提示 Method breakpoints may dramatically slow down debugging
之前不小心打了一个断点,然后项目长时间不能启动,保持一个加载的状态,并且提示Method breakpoints may dramatically slow down debugging,百度之后才知 ...
- [原]win10开机时开启NumLock
修改如下注册表项下的InitialKeyboardIndicators的值为80000002,重启即可. HKEY_USERS\.Default\Control Panel\Keyboard\ HKE ...
- 关于ping命令的批处理问题
需求描述:假设你的IP保存在名字为IP.txt的文本文档里,且每行一条ip.你想ping这些IP并得到结果 解决方案:用下面的批处理代码即可实现,将下面的代码保存为后缀为.bat的文件,比如test. ...
- RHEL安装rails后启动报错
[root@redhat7 demo]# rails server/usr/local/rvm/gems/ruby-2.4.1/gems/bundler-1.16.0.pre.2/lib/bundle ...
- day45-多线程(server和多个client通信)
#server: import socket from threading import Thread def func(conn): conn.send(b'hello client') ret = ...
- BZOJ3566 [SHOI2014]概率充电器 (树形DP&概率DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...