一.分布式版本控制系统
分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑,但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑,这样就不怕本地出现什么故障了(⽐如运⽓差,硬盘坏了,上⾯的所有东西全部丢失,包括git的所有内容)
如图:
二.远程仓库
我们这里讲解就通过gittub来实现,网址如下:
开源软件 - Gitee.com
至于新建远程仓库,大家可以自行去注册账号,我们直接用linux来操作:
2.1.克隆远程仓库
git clone +链接;
//表示克隆远程仓库
链接是指远程仓库网址,操作如下:
点击克隆:
这里就会显示不同协议的网址信息
SSH协议和HTTPS协议是Git最常使⽤的两种数据传输协议。SSH协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由Git服务器进⾏管理。使⽤HTTPS⽅式时,没有要求,可以直接克隆下来
使⽤HTTPS⽅式:
如下:
出现的linux-study就是我们的远程仓库
使⽤SSH⽅式:
SSH⽅式克隆仓库,需要我们添加公钥到远端库中,否则服务器会拒绝了我们的clone链接,需要
我们设置⼀下。
步骤如下:
第⼀步:创建SSH Key
在⽤⼾主⽬录下,看看有没有.ssh⽬录,如果有,再看看这个⽬录下有没有id_rsa 和 id_rsa.pub 这两个⽂件,如果已经有了,可直接跳到下⼀步。如果没有,需要创建SSH Key:
指令:
ssh-keygen -t rsa -C +邮箱;
顺利的话,可以在⽤⼾主⽬录⾥找到 .ssh ⽬录,⾥⾯有 id_rsa 和 id_rsa.pub 两个⽂件,这两
个就是SSHKey的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告
诉任何⼈
第⼆步:添加⾃⼰的公钥到远端仓库
在gitee设置中有ssh,如下:
在上面添加即可
注意:添加的是公钥
此时就可以git clone ssh协议了:
如果有多个⼈协作开发,GitHub/Gitee允许添加多个公钥,只要把每个⼈的电脑上的Key都添加到GitHub/Gitee,就可以在每台电脑上往GitHub/Gitee上提交推送了。当我们从远程仓库克隆后,实际上Git会⾃动把本地的master分⽀和远程的master分⽀对应起来,并且,远程仓库的默认名称是origin 。在本地我们可以使⽤ git remote 命令,来查看远程库的信息,指令如下:
git remote;
注意:你必须cd进入远程仓库中
git remote -v;
//显示更详细信息
2.2.向远程仓库推送
我们书写以下内容:
将filetxt推送到远程仓库
注意:
我们一定要查看name和e-mail是否和远程仓库一致
指令:
//之前讲解过了,这里直接写指令:
git config -l
git config (--global) user.name(email) " "
接下来我们就直接提交到远程仓库中
操作如下:
git push <远程主机名> <本地分⽀名>:<远程分⽀名>
//如果本地分⽀名与远程分⽀名相同,则可以省略冒号:,并且后面不写,如下:
git push <远程主机名> <本地分⽀名>
//<远程主机名>:git remote查看,默认为origin
如图:
这样我们就完成了推送
注意:
我们使⽤的是SSH协议,是不⽤每⼀次推送都输⼊密码的,⽅便了我们的推送操作。如果你使⽤的是HTTPS协议,有个⿇烦地⽅就是每次推送都必须输⼊⼝令。
2.3.拉取远程仓库
就是将远程仓库中与我们本地仓库不同的信息拉取到本题,我们这里为了模拟,直接在filetxt上修改,然后拉取,操作如下:
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略,如下:
git pull <远程主机名> <远程分⽀名>
三.配置Git
忽略特殊⽂件:
在Git⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git就会⾃动忽略这些⽂件了
这是我的.gitnore文件,大家也可以自己向里面写入:
#:表示注释
*:表示忽略
!:表示强制执行
还有一些特殊指令,如下:
git add -f [filename];
//也可以强制执行
git check-ignore +[filename];
//查看失败原因
给命令配置别名:
(不建议大家初学就该)
git config --global alias.+内容(修改之后别名)指令;
//例如:
git config --global alias.st status
--global 参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有⽤。如果不加,那只
针对当前的仓库起作⽤
最后,感谢大家的支持!!!