1. 理解分布式版本控制系统
我们所说的⼯作区,暂存区,版本库等,都是在本地!也就是在笔记本或计算机上。⽽我们的 Git 其实是分布式版本控制系统.可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样⼯作的时候,就不需要联⽹了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作呢?
分布式版本控制系统通常有⼀台充当“中央服务器”的电脑,但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改。
2. 远程仓库
Git 是分布式版本控制系统,同⼀个 Git 仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有⼀台机器有⼀个原始版本库,此后,别的机器可以 “克隆” 这个原始版本库,⽽且每台机器的版本库其实都是⼀样的,并没有主次之分。
实际情况往往是这样,找⼀台电脑充当服务器的⻆⾊,每天24⼩时开机,其他每个⼈都从这个“服务器”仓库克隆⼀份到⾃⼰的电脑上,并且各⾃把各⾃的提交推送到服务器仓库⾥,也从服务器仓库中拉取别⼈的提交。
完全可以⾃⼰搭建⼀台运⾏ Git 的服务器,不过为了学 Git 先搭个服务器绝对是⼩题⼤作。好在有 GitHub 和 Gitee ⽹站,从名字就可以看出,这个⽹站就是提供 Git 仓库托管服务的,所以,只要注册⼀个账号,就可以免费获得 Git 远程仓库。 Github 是国外的⽹站,速度⽐较慢,下面示例采⽤ G itee 来托管代码。
3. 新建远程仓库
新建远程项⽬仓库
填写基本信息
从创建好的远程仓库中我们便能看到,之前在本地学习过的分⽀,也存在于远程仓库中并被管理起来了。刚创建的仓库有且只有⼀个默认的master分⽀。
4. 克隆远程仓库
克隆/下载远端仓库到本地,需要使⽤ git clone 命令,后⾯跟上我们的远端仓库的链接,远端仓库
的链接可以从仓库中找到:选择“克隆/下载”获取远程仓库链接:
SSH 协议和 HTTPS 协议是 Git 最常使⽤的两种数据传输协议。SSH 协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由 Git 服务器进⾏管理。
使⽤ HTTPS ⽅式时,没有要求,可以直接克隆下来。
简单点,下列代码 HTTPS ⽅式克隆好了远程仓库。
当我们从远程仓库克隆后,实际上 Git 会⾃动把本地的 master 分⽀和远程的 master 分⽀对应起来,并且,远程仓库的默认名称是 origin 。在本地我们可以使⽤ git remote 命令,来查看远程库的
信息,如:
或者,⽤ git remote -v 显⽰更详细的信息:
上⾯显⽰了可以抓取和推送的origin的地址。如果没有推送权限,就看不到 push 的地址。
5. 向远程仓库推送
本地已经 clone 成功远程仓库后,我们便可以向仓库中提交内容,例如新增⼀个 file.txt ⽂件
提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 gitee 上配置的⽤户名和邮箱⼀致,否则会出错。或者从来没有设置过全局的 name 和 e-mail,那么我们第⼀次提交时也 会报错。这就需要我们重新配置下了,同样要注意需要和 gitee 上配置的⽤⼾名和邮箱⼀致。
到这⾥我们已经将内容提交⾄本地仓库中,需要使⽤ git push 命令将本地仓库的内容推送⾄远程仓库,该命令⽤于将本地的分⽀版本上传到远程并合并,命令格式如下:
git push <远程主机(仓库)名> <本地分⽀名>:<远程分⽀名>
# 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:
git push <远程主机(仓库)名> <本地分⽀名>
此时我们要将本地的 master 分⽀推送到 origin 主机的 master 分⽀,则可以:
推送成功!这⾥由于使⽤的是 HTTPS 协议,有个⿇烦地⽅就是每次推送都必须输⼊密码⼝令。 使如果⽤的是SSH 协议,不⽤每⼀次推送都输⼊密码的,⽅便了我们的推送操作。
接下来,看看码云远端,代码已经被推送⾄远端了:
6. 拉取远程仓库
在 gitee 上点击 README.md ⽂件并在线修改它:
修改内容:
此时,远程仓库是要领先于本地仓库⼀个版本, 为了使本地仓库保持最新的版本,我们需要拉取下远 端代码,并合并到本地。Git 提供了 git pull 命令,该命令⽤于从远程获取代码并合并本地的版
本。格式如下:
git pull <远程主机(仓库)名> <远程分⽀名>:<本地分⽀名>
# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
git pull <远程主机(仓库)名> <远程分⽀名>
拉取远程分⽀,并与当前分⽀进⾏合并