1.远程操作
1.1理解分布式版本控制系统
我们目前所说的所有内容(工作区、暂存区、版本库等),都是在本地,也就是在你的笔记本或计算机上。而 Git 其实是分布式版本控制系统。这意味着每个人的电脑上都是一个完整的版本库,工作时不需要联网,因为版本库就在自己电脑上。
既然每个人电脑上都有一个完整的版本库,多人如何协作呢?比如你在自己电脑上改了文件 A,同事也在他的电脑上改了文件 A,这时你们只需把各自的修改推送给对方,就可以互相看到对方的修改了。
分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上直接推送版本库的修改,因为可能你们不在同一个局域网内,两台电脑互相访问不了。因此,分布式版本控制系统通常也有一台充当'中央服务器'的电脑,但这个服务器的作用仅仅是用来方便'交换'大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
有了这个'中央服务器'的电脑,这样就不怕本地出现什么故障了(比如硬盘坏了,上面的所有东西全部丢失,包括 Git 的所有内容)。
1.2远程仓库
Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以'克隆'这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
现实生活中是不会有人在一台电脑上搞几个远程库玩的,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉。实际情况往往是找一台电脑充当服务器的角色,每天 24 小时开机,其他每个人都从这个'服务器'仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
完全可以自己搭建一台运行 Git 的服务器,不过现阶段为了学 Git 先搭个服务器绝对是小题大做。好在这个世界上有个叫 GitHub 的网站,提供 Git 仓库托管服务,只要注册一个账号,就可以免费获得 Git 远程仓库。GitHub 是国外的网站,国内访问的速度比较慢,实际开发中常采用 Gitee(码云)来托管代码。
1.3新建远程仓库
新建远程项目仓库时,填写基本信息即可。创建成功后,可以对远程仓库进行基本的设置:开源或私有。
从创建好的远程仓库中便能看到,之前在本地学习过的分支,也存在于远程仓库中并被管理起来了。刚创建的仓库有且只有一个默认的 master 分支。
1.4克隆远程仓库—HTTPS/SSH协议
克隆/下载远端仓库到本地,需要使用 git clone 命令,后面跟上我们的远端仓库的链接,远端仓库的链接可以从仓库中找到:选择'克隆/下载'获取远程仓库链接。
SSH 协议和 HTTPS 协议是 Git 最常使用的两种数据传输协议。SSH 协议使用了公钥加密和公钥登陆机制,体现了实用性和安全性,使用此协议需要将我们的公钥放上服务器,由 Git 服务器进行管理。使用 HTTPS 方式时,没有要求,可以直接克隆下来。
使用 SSH 方式克隆仓库,由于我们没有添加公钥到远端库中,服务器会拒绝我们的 clone 链接。需要设置一下:
- 创建 SSH Key。在用户主目录下,看看有没有.ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,需要创建 SSH Key。顺利的话,可以在用户主目录里找到.ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。
- 添加自己的公钥到远端仓库。点击 ssh 公钥选项进行设置:点击确认后,需要对你进行认证,输入你的账号密码即可。至此,我们的准备工作全部做完,欢快的 clone 吧。
done 成功!如果有多个人的协作开发,GitHub/Gitee 允许添加多个公钥,只要把每个人的电脑上的 Key 都添加到 GitHub/Gitee,就可以在每台电脑上往 GitHub/Gitee 上提交推送了。当我们从远程仓库克隆后,实际上 Git 会自动把本地的 master 分支和远程的 master 分支对应起来,并且,远程仓库的默认名称是 origin。在本地我们可以使用 git remote 命令,来查看远程库的信息,或者用 git remote -v 显示更详细的信息:上面显示了可以抓取和推送的 origin 的地址。如果没有推送权限,就看不到 push 的地址。
1.5向远程仓库推送
本地已经 clone 成功远程仓库后,我们便可以向仓库中提交内容,例如新增一个 file.txt 文件:
echo "hello world" > file.txt
git add file.txt
git commit -m "add file.txt"
提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 gitee 上配置的用户名和邮箱一致,否则会出错。或者从来没有设置过全局的 name 和 e-mail,那么我们第一次提交时也会报错。这就需要我们重新配置下了,同样要注意需要和 gitee 上配置的用户名和邮箱一致。


