理解分布式版本控制系统
1.中央服务器
我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地也就是在你的笔记本或者计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢?
那我们多人开发难道是大家围在一台电脑上开发吗?
当然不是了,git也想到了这个问题
⽐⽅说你在⾃⼰电脑上改了⽂件A,你的同事也在他的电脑上改了⽂件A,这时,你们俩之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了
分布式版本控制系统通常也有⼀台充当中央服务器的电脑,但这个服务器的作⽤仅仅是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑,这样就不怕本地出现什么故障了(⽐如运⽓差,硬盘坏了,上⾯的所有东西全部丢失,包括git的所有内容)
2.远程仓库
1.新建远程仓库
1新建仓库步骤
2.仓库成员管理
3.交流问题Issue
4.合并申请单 Pull Request
开发完成后向master主分支合并分支是非常不安全的,实际开发中不会被允许
Pull Request就相当于是一个合并申请单,开发者向管理员发起申请合并的操作,等管理员同意之后,会有专门的人员来进行合并
详细介绍链接:Pull Request
3.克隆远程仓库
1.使用使HTTPS ⽅式
# 使用HTTP的方式克隆远程仓库
git clone [远程仓库链接]
# 查看远程仓库名字
git remote -v
表示当前仓库具有推送和拉取的权限
2.使用SSH的方式
SSH 协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由 Git 服务器进⾏管理
# 使用SSH的方式克隆仓库
git clone git@gitee.com:wang-congya/remote-gitcode.git
使⽤ SSH ⽅式克隆仓库,由于我们没有添加公钥到远端库中,服务器拒绝了我们的 clone 链接。需要我们设置⼀下
没看明白,下次再说
4.修改user.name和email配置
首先我们查看一下git配置,需要注意一下本地仓库与远程仓库的name,与email的配置要相同,如果忘记了,可以在个人信息中查看
修改git配置
git --global user.name "wang-congya"
git --global user.email "wangcong_626@163.com"
5.向远程仓库推送
需要有权限才能推送,并且需要将远程仓库与本地仓库的分支进行连接,master分支在克隆的时候会自动连接
# 创建一个文件写入hello git
vim file.txt
# 提交至暂存区以及版本库
git add file.txt
git commit -m""
# 查看状态
git status
# 向远程仓库推送并合并到远程分支
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
4 git pull origin master
# 按照提示输入git的名称和密码即可
"wang-congya"
密码就是账号密码
6.拉取远程仓库
有时候,远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,我们需要拉取下远端代码,并合并到本地。Git 提供了 git pull 命令,该命令⽤于从远程获取代码并合并本地的版本
# 拉取远程仓库并合并到本地分支上
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
git pull origin master
# 查看当前仓库状态
git status
7.配置 .gitignore
在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让 Git 知道呢?
在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git 就会⾃动忽略这些⽂件了
不需要从头写 .gitignore ⽂件,gitee 在创建仓库时就可以为我们⽣成,不过需要我们主动勾选⼀下:
# 强制添加,尽量不使用
git add -f [文件名]
# 修改.gitignore
# 表示忽略所有以.so结尾的文件
*.so
# 表示不忽略b.so文件
!b.so
# 查看某个文件被忽略的原因
git check-ignore -v a.so