前言
分布式版本控制系统
我们之前所学习过的内容,本质都是在本地,也就是在笔记本上。而Git是分布式版本控制系统
可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作呢?⽐⽅说你在⾃⼰电脑上改了⽂件A,你的同事也在他的电脑上改了⽂件A,这时,你们俩之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。
分布式版本控制系统的安全性要⾼很多,因为每个⼈电脑⾥都有完整的版本库,某⼀个⼈的电脑坏掉了不要紧,随便从其他⼈那⾥复制⼀个就可以了。
在实际使⽤分布式版本控制系统的时候,其实很少在两⼈之间的电脑上推送版本库的修改,因为可能你们俩不在⼀个局域⽹内,两台电脑互相访问不了。也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑,但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑,这样就不怕本地出现什么故障了(⽐如运⽓差,硬盘坏了,上⾯的所有东西全部丢失,包括git的所有内容)
远程仓库
Git 是分布式版本控制系统,同⼀个 Git 仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有⼀台机器有⼀个原始版本库,此后,别的机器可以 “克隆” 这个原始版本库,⽽且每台机器的版本库其实都是⼀样的,并没有主次之分。
你肯定会想,⾄少需要两台机器才能玩远程库不是?但是我只有⼀台电脑,怎么玩?
其实⼀台电脑上也是可以克隆多个版本库的,只要不在同⼀个⽬录下。不过,现实⽣活中是不会有⼈这么傻的在⼀台电脑上搞⼏个远程库玩,因为⼀台电脑上搞⼏个远程库完全没有意义,⽽且硬盘挂了会导致所有库都挂掉,所以我也不告诉你在⼀台电脑上怎么克隆多个仓库。
实际情况往往是这样,找⼀台电脑充当服务器的⻆⾊,每天24⼩时开机,其他每个⼈都从这个“服务器”仓库克隆⼀份到⾃⼰的电脑上,并且各⾃把各⾃的提交推送到服务器仓库⾥,也从服务器仓库中拉取别⼈的提交。
完全可以⾃⼰搭建⼀台运⾏ Git 的服务器,不过现阶段,为了学 Git 先搭个服务器绝对是⼩题⼤作。好在这个世界上有个叫 GitHub 的神奇的⽹站,从名字就可以看出,这个⽹站就是提供 Git 仓库托管服务的,所以,只要注册⼀个GitHub账号,就可以免费获得 Git 远程仓库。
github 是国外的⽹站,速度⽐较慢,我们课堂上同统⼀采⽤码云来托管代码。
新建远程仓库
新建远程项目仓库
填写基本信息,进行创建
可以设置成员管理
issue是什么??
有人发现问题,可以与开发人员进行交流。
pull request??
合并申请单,我们要进行合并,可能有bug,需要进行申请。由管理员确定是否进行合并操作。
下面这两个是介绍,中文和英文版本。
新建的远程仓库可以看到,之前学习的分支,也存在与远程仓库中并管理起来了。
刚创建的仓库尤其只有一个默认的master分支。
克隆远程仓库
克隆远程仓库到本地,需要使用
git clone 远程仓库链接。
这个地方就是我们的远程仓库链接
SSH协议和HTTPS协议是Git最常用的两种数据传输协议。
SSH 协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由 Git 服务器进⾏管理。使⽤ HTTPS ⽅式时,没有要求,可以直接克隆下来。
HTTPS
直接进行git clone就可以,但是注意,不能在本地仓库下操作。
SSH
如果我们直接按照上面方式会发生什么??
这样是不允许的,使用SSH方式克隆本地仓库,由于我们没有添加公钥到远端库中,服务器拒绝了我们的clone链接。
需要我们手动设置
1.在用户主目录下,查看是否存在 .ssh 目录。
如果有,我们再看一下这个目录下是否有id_rsa 和 id_rsa.pub 这两个⽂件。
如果已经有了,可直接跳到下⼀步。如果没有,需要创建SSH Key.
如何创建呢??
ssh-keygen -t rsa -C "邮箱"一路回车,使用默认即可
我们查看一下是否存在了
这两个就是SSH Key的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告任何⼈
2.添加自己的公钥到远程仓库
进行设置,复制粘贴进来就可以。
如果有多人协作开发,可以添加多个公钥只要把每个⼈的电脑上的。
每个人电脑上Key 都添加到 GitHub/Gitee,就可以在每台电脑上往 GitHub/Gitee 上提交推送了。
我们再执行clone操作就可以了
当我们从远程仓库克隆后,实际上Git会自动把本地master分支与远程master分支对应起来。
并且,远程仓库默认名称是origin.
我们可以在本地使用
git remote 查看远程库的信息 ,添加 -v 选项,显示更详细的信息。
向远程仓库推送
clone之后,我们就可以向远程仓库进行推送操作。
本地仓库中某个分支推送远程仓库某个分支
提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 gitee 上配置的⽤⼾名和邮箱⼀致,否则会出错。或者从来没有设置过全局的 name 和 e-mail,那么我们第⼀次提交时也会报错。这就需要我们重新配置下了,同样要注意需要和 gitee 上配置的⽤⼾名和邮箱⼀致。
git push:本地仓库内容推送到远程仓库
git push 远程主机名 本地分支名 :远程分支名。
git push 远程主机名 本地分支名 (本地分支名与远程分支名相同)
拉取远程仓库
我们可以直接在码云上对文件进行修改,我们不要这样做。知道就可以
假设我们已经对文件进行修改了
此时,远程仓库要领先于本地仓库的版本,为了使本地仓库保持最新版本,需要拉取下远端代码,合并到本地。
git pull 远程主机名 远程分支名 :本地分支名
git pull 远程主机名 远程分支名(远程分支与当前分支合并)
如果git本地和远端仓库不同,git会强制你进行同步。
对你来讲,一旦提交成功,就必须被所有人看到。
忽略特殊文件
在日常开发中,我们有些文件不想提交到远端仓库,就比如保存了数据库密码的配置文件,Git是如何知道的呢??
在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git 就会⾃动忽略这些⽂件了。
不需要从头写 .gitignore ⽂件,gitee 在创建仓库时就可以为我们⽣成,不过需要我们主动勾选。
当时没有选择,在工作区也可以创建一个。
我们看一下如何使用??
如果我们想要忽略以 .so和 .ini为结尾的文件。
我们需要在 .gitignore写上
我们在本地上对.gitignore进行修改是立马生效的。
把 .gitignore提交到远端仓库就可以。
我们在工作区新增两个文件,检验 .gitignore 的标准就是 git status 命令是不是说 working tree clean 。
我们发现Git 并没有提⽰在⼯作区中有⽂件新增,果然 .gitignore ⽣效了!
我们有时想添加这个后缀的文件,但是后缀被忽略了
git add -f 文件名 强制添加
git check-ignore -v 文件名 查看忽略
如果我们就想要添加d.so文件,我们可以对 .gitignore进行修改。
我们可以发现确实提交成功了。
命令配置起别名
我们可以给命令起别名,便于我们操作
git config --global alias.st status 将git status简化为git st
我们看一下
总结
以上就是今天要讲的内容 。希望对大家的学习有所帮助,仅供参考 如有错误请大佬指点我会尽快去改正 欢迎大家来评论~~ 😘 😘 😘