Git远程操作|新建远程仓库|克隆远程仓库|向远程仓库推送|拉取远程仓库|忽略特殊文件|配置命令别名
理解分布式版本控制系统我们⽬前所说的所有内容⼯作区暂存区版本库等等都是在本地也就是在你的笔记本或者计算机上。⽽我们的Git其实是分布式版本控制系统可以简单理解为我们每个⼈的电脑上都是⼀个完整的版本库这样你⼯作的时候就不需要联⽹了因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库那多个⼈如何协作呢⽐⽅说你在⾃⼰电脑上改了⽂件A你的同事也在他的电脑上改了⽂件A这时你们俩之间只需把各⾃的修改推送给对⽅就可以互相看到对⽅的修改了。分布式版本控制系统的安全性要⾼很多因为每个⼈电脑⾥都有完整的版本库某⼀个⼈的电脑坏掉了不要紧随便从其他⼈那⾥复制⼀个就可以了。在实际使⽤分布式版本控制系统的时候其实很少在两⼈之间的电脑上推送版本库的修改因为可能你们俩不在⼀个局域⽹内两台电脑互相访问不了。也可能今天你的同事病了他的电脑压根没有开机。因此分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改没有它⼤家也⼀样⼲活只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑这样就不怕本地出现什么故障了⽐如运⽓差硬盘坏了上⾯的所有东西全部丢失包括git的所有内容远程仓库Git是分布式版本控制系统同⼀个Git仓库可以分布到不同的机器上。怎么分布呢最早肯定只有⼀台机器有⼀个原始版本库此后别的机器可以“克隆”这个原始版本库⽽且每台机器的版本库其实都是⼀样的并没有主次之分。你肯定会想⾄少需要两台机器才能玩远程库不是但是我只有⼀台电脑怎么玩其实⼀台电脑上也是可以克隆多个版本库的只要不在同⼀个⽬录下。不过现实⽣活中是不会有⼈这么傻的在⼀台电脑上搞⼏个远程库玩因为⼀台电脑上搞⼏个远程库完全没有意义⽽且硬盘挂了会导致所有库都挂掉所以我也不告诉你在⼀台电脑上怎么克隆多个仓库。实际情况往往是这样找⼀台电脑充当服务器的⻆⾊每天24⼩时开机其他每个⼈都从这个“服务器”仓库克隆⼀份到⾃⼰的电脑上并且各⾃把各⾃的提交推送到服务器仓库⾥也从服务器仓库中拉取别⼈的提交。完全可以⾃⼰搭建⼀台运⾏Git的服务器不过现阶段为了学Git先搭个服务器绝对是⼩题⼤作。好在这个世界上有个叫GitHub的神奇的⽹站从名字就可以看出这个⽹站就是提供Git仓库托管服务的所以只要注册⼀个GitHub账号就可以免费获得Git远程仓库。github是国外的⽹站速度⽐较慢我们课堂上同统⼀采⽤码云来托管代码。下来我们从零开始使⽤⼀下码云远程仓库新建远程仓库克隆远程仓库克隆/下载远端仓库到本地需要使⽤ git clone 命令后⾯跟上我们的远端仓库的链接远端仓库的链接可以从仓库中找到选择“克隆/下载”获取远程仓库链接SSH协议和HTTPS协议是Git最常使⽤的两种数据传输协议。SSH协议使⽤了公钥加密和公钥登陆机制体现了其实⽤性和安全性使⽤此协议需要将我们的公钥放上服务器由Git服务器进⾏管理。使⽤HTTPS⽅式时没有要求可以直接克隆下来。HTTPS当我们从远程仓库克隆后实际上Git会⾃动把本地的master分⽀和远程的master分⽀对应起来并且远程仓库的默认名称是 origin 。在本地我们可以使⽤ git remote 命令来查看远程库的信息或者⽤ git remote -v 显⽰更详细的信息SSH使⽤SSH⽅式克隆仓库由于我们没有添加公钥到远端库中服务器拒绝了我们的clone链接。需要我们设置⼀下第⼀步创建SSHKey。在⽤⼾主⽬录下看看有没有.ssh⽬录如果有再看看这个⽬录下有没有id_rsa 和 id_rsa.pub 这两个⽂件如果已经有了可直接跳到下⼀步。如果没有需要创建SSH Key注意要输⼊⾃⼰的邮箱然后⼀路回⻋使⽤默认值即可顺利的话可以在⽤⼾主⽬录⾥找到 .ssh ⽬录⾥⾯有 id_rsa 和 id_rsa.pub 两个⽂件这两个就是SSH Key的秘钥对 id_rsa 是私钥不能泄露出去 id_rsa.pub 是公钥可以放⼼地告诉任何⼈。第⼆步添加⾃⼰的公钥到远端仓库。done,成功如果有多个⼈协作开发GitHub/Gitee允许添加多个公钥只要把每个⼈的电脑上的Key都添加到GitHub/Gitee就可以在每台电脑上往GitHub/Gitee上提交推送了向远程仓库推送本地已经 clone 成功远程仓库后我们便可以向仓库中提交内容提交时要注意如果我们之前设置过全局的name和e-mail这两项配置需要和gitee上配置的⽤⼾名和邮箱⼀致否则会出错。或者从来没有设置过全局的name和e-mail那么我们第⼀次提交时也会报错。这就需要我们重新配置下了同样要注意需要和gitee上配置的⽤⼾名和邮箱⼀致。如何配置已讲过在这⾥就不再赘述。到这⾥我们已经将内容提交⾄本地仓库中如何将本地仓库的内容推送⾄远程仓库呢需要使⽤ git push 命令该命令⽤于将本地的分⽀版本上传到远程并合并命令格式如下git push远程主机名本地分⽀名:远程分⽀名# 如果本地分⽀名与远程分⽀名相同则可以省略冒号 git push远程主机名本地分⽀名拉取远程仓库此时远程仓库是要领先于本地仓库⼀个版本为了使本地仓库保持最新的版本我们需要拉取下远端代码并合并到本地。Git提供了 git pull 命令该命令⽤于从远程获取代码并合并本地的版本。格式如下git pull远程主机名远程分⽀名:本地分⽀名# 如果远程分⽀是与当前分⽀合并则冒号后⾯的部分可以省略。 git pull远程主机名远程分⽀名配置Git忽略特殊文件在⽇常开发中我们有些⽂件不想或者不应该提交到远端⽐如保存了数据库密码的配置⽂件那怎么让Git知道呢在Git⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件然后把要忽略的⽂件名填进去Git就会⾃动忽略这些⽂件了。不需要从头写 .gitignore ⽂件gitee在创建仓库时就可以为我们⽣成不过需要我们主动勾选⼀下如果当时没有选择这个选择在⼯作区创建⼀个也是可以的。⽆论哪种⽅式最终都可以得到⼀个完整的 .gitignore ⽂件例如我们想忽略以 .so 和 .ini 结尾所有⽂件 .gitignore 的内容如下在 .gitignore ⽂件中也可以指定某个确定的⽂件。最后⼀步就是把 .gitignore 也提交到远端就完成了接着我们就来验证⼀下.gitignore⽂件的能⼒在⼯作区新增两个⽂件 a.so b.ini但有些时候你就是想添加⼀个⽂件到Git但由于这个⽂件被 .gitignore 忽略了根本添加不了那么可以⽤ -f 强制添加可以添加⼀条例外规则把指定⽂件排除在 .gitignore 规则外的写法就是 ! ⽂件名所以只需把例外⽂件添加进去即可可能是 .gitignore 写得有问题需要找出来到底哪个规则写错了可以⽤ git check-ignore 命令检查Git会告诉我们 .gitignore 的第3⾏规则忽略了该⽂件于是我们就可以知道应该修订哪个规则。配置命令别名git⽀持对命令进⾏简化将 git status 简化为 git stgit config--global alias.st status–global 参数是全局参数也就是这些命令在这台电脑的所有Git仓库下都有⽤。如果不加那只针对当前的仓库起作⽤