目录
一、分布式版本控制系统
我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者计算机上。⽽我们的 Git 其实是分布式版本控制系统!
可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈协作的时候,只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。分布式版本控制系统的安全性要⾼很多,因为每个⼈电脑⾥都有完整的版本库,某⼀个⼈的电脑坏掉了不要紧,随便从其他⼈那⾥复制⼀个就可以了。但这有个前提就是大家的设备要在同一个局域网内,当不再同一个局域网内时,两台电脑是无法进行互相访问的,或者是对方的电脑根本就没有开机,也是无法进行这些操作的。
因此,分布式版本控制系统通常也有⼀台充当**"中央服务器**"的电脑,但这个服务器的作⽤仅仅是⽤来⽅便"交换"⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个"中央服务器"的电脑,这样就不怕本地出现什么故障了。
二、远程仓库
Git 是分布式版本控制系统,同⼀个 Git 仓库,可以分布到不同的机器上。刚开始,只有⼀台机器有⼀个原始版本库,此后,别的机器可以 "克隆" 这个原始版本库,也可以推送代码到Git仓库,⽽且每台机器的版本库其实都是⼀样的,并没有主次之分。
⼀台电脑上也是可以克隆多个版本库的,只要不在同⼀个⽬录下,但这样没有意义,实际情况往往是找⼀台电脑充当服务器的⻆⾊,每天24⼩时开机,其他每个⼈都从这个"服务器"仓库克隆⼀份到⾃⼰的电脑上,并且各⾃把各⾃的提交推送到服务器仓库⾥,也从服务器仓库中拉取别⼈的提交。
在使用的时候,可以自己搭建一个Git仓库。当前学习阶段,可以先使用gitup管理平台,只要注册账号,就可以创建自己的远程仓库。
新建远程仓库:
1.创建远程仓库:


1.填写仓库名
2.仓库介绍
3.可以选择自己的仓库是开源的或私有
4.可以勾选初始化仓库,
选择语言:选择一个自己使用的语言,
.gitignore: 在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让 Git 知道呢?在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git 就会⾃动忽略这些⽂件了。
可以在创建仓库的时候勾选上该文件,Git为你自动配置,也可以自己创建.gitignore文件,然后提交到远端即可。
Issue模版:
Pull Request模版:
点击创建。
刚创建的仓库有且只有⼀个默认的master分⽀。
可以自己创建分支

2.克隆远程仓库:
克隆远程仓库下载到本地,使用git clone命令,后面跟上远程仓库的地址

有这里中克隆方式:

前两种是最常用的,SSH 协议和 HTTPS 协议是 Git 最常使⽤的两种数据传输协议。SSH 协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由 Git 服务器进⾏管理。使⽤ HTTPS ⽅式时,没有要求,可以直接克隆下来。
使用HTTPS协议:
在Linux-ubuntu系统上:



HTTPS方式克隆成功。
使用SSL方式克隆:
由于复制的是同一个仓库,会发生名字冲突,要将刚复制过的文件先删除:

复制SSL地址:


克隆到"git test"中。..
git@gitee.com:权限被拒绝(公钥)。
致命:无法从远程存储库读取。请确保您拥有正确的访问权限,并且存储库存在。
使用SSL方式克隆时,第一次需要先配置公钥:
先执行下面这行代码:


公钥和私钥已经生成公钥:在/root/.ssh/id_rsa.pub文件中,根据路径找到,并复制公钥。




配置好公钥后,再执行克隆命令:

克隆远程仓库成功。

当我们从远程仓库克隆后,实际上 Git 会⾃动把本地的 master 分⽀和远程的 master 分⽀对应起来,并且,远程仓库的默认名称是 origin 。在本地我们可以使⽤ git remote 命令,来查看远程库的信息:

使用git remove -v查看更详细的信息:

显示的是向远程origin拉取和推送的地址。
设置用户名和邮箱:

向远程仓库推送:
向远程仓库推送一个文件:

通过git push命令,向远程推送内容:
git push [远程主机名] [本地分支名]:[远程分支名]
git push origin master:master
# 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:
git push <远程主机名> <本地分⽀名>
git push origin master
这里将本地master分支推送到远程origin主机的master分支,Git已经拉取了关联,可以使用git push命令进行推送。

查看一下远程仓库:

代码已推送到了远端:

当要删除推送到远程的内容时,通过git push <y远程主机名> :<远程分支名>命令即可删除.
拉取远程仓库:
有时别人提交到仓库的内容,自己需要使用,可以拉取远程仓库内容,同步到自己的本地仓库.
可以通过点击远程仓库上的fork按钮,进行拉取,

也可以在自己的本地仓库终端使用git pull命令进行拉取.
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
git pull origin master:master
# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
git pull <远程主机名> <远程分⽀名>
给命令配置别名:
有时一些git的命令非常的长或非常复杂,可以通过给命令配置别名的方式,简化命令.
git config [--global] alias:别名 git原命令 //可以配置全局的,也可以单独对所在分支配置
给git status命令配置为git st:
git config --global alias:st status

标签管理:
对每次提交并推送到远程的以次项目,都可以设置一个标签,标签就相当于一个版本,可以通过标签回退到某次提交的版本.
创建标签:通过git tag 命令,即可创建标签:
git tag 标签名 //为当前分支创建一个标签
git tag命令,用于查看所有标签

默认标签是打在最新提交的 commit 上的.若想要为指定提交版本打标签,要先找到要打标签的commitID,然后通过 git tag 标签名 commitID 命令为指定版本打标签.
git还提供了带有说明的标签:
git tag -a [name] -m "XXX" [commit_id] //-a:标签名 -m:描述信息 要指定commitID

查看标签信息,通过git show命令:
git show 标签名 //查看指定标签的信息

删除标签:
即使标签打错了,也是可以删除的,因为标签值保存到了本地,不会自动推送到远程.
通过git tag -d命令删除标签:
git tag -d 标签名 //删除指定标签

推送标签到远程:
通过git push <远程主机名> 标签名 命令推送:

查看一下远程是否推送成功:


当一次打了很多标签时,可以通过git push origin --tags命令一次性推送到远程.