Git学习笔记

前言

今天是2021/9/12,计划和同学一起开发微信小程序了,看了下语法大概就是html和css以及Vue的魔改,这个问题应该不大。重点是我们觉得这也是第一个正正经经的可以算得上项目的东西了,所以还是决定好好打磨它,于是乎这个时候就想到了版本管理的问题,自然而然就得开始学习Git了

关于版本控制的一些话

为什么要有版本控制

比如今天觉得第一版不好,就出了第二版,但是第一版怎么办呢,总不能删了吧?万一哪天又觉得第一版好怎么办?
存在本地又不好大家合作开发,所以我们需要一个中间的平台来储存众多版本——这就是Git诞生的必要性

版本控制的发展史

1.本地版本控制
在本地记录保存每次更新,适合个人开发用

很方便,但是也很明显,很low

2.集中版本控制——SVN
所有版本都放到一个服务器,这样一来就方便协同开发了
(缺点是不联网就很难办,另外,要是服务器炸了就可以重开了)

3.分布式版本控制——Git
每个人都拥有完整的代码,所有的版本信息都会同步到每一个开发者,
断网的时候可以本地提交,有网络时会自动同步,这样一来只要有一个还保留着代码,就能很快恢复数据
(缺点是,安全隐患大,容易出内鬼;另外这同一份文件多次存储,加大了空间消耗)
(欸,等等,这难道是区块链??w(゚Д゚)w,算了,先学会用再说

Git下载与安装

官网下载比较慢的话,
那么就试试镜像下载吧,相信用过npm的应该很熟悉了:git镜像下载
进去之后选一个稍微旧一点的版本下载
Git学习笔记_第1张图片
64位就找64位咯
Git学习笔记_第2张图片
Git学习笔记_第3张图片
Git学习笔记_第4张图片
这里要注意,选择默认的文本编辑器
Git学习笔记_第5张图片
我选的visual studio code(虽然喜欢idea
Git学习笔记_第6张图片

然后管他三七二十一地,直接莽Next就完事,最后finish,安装完毕
此时鼠标右键可以看到Git的相关内容,
这里也可以看到
Git学习笔记_第7张图片
它们分别是:
Git Bash:Unix与Linux风格的命令行
Git CMD:Windows风格
Git GUI :图形界面版本Git,但是初学者嘛还是先学会用命令行比价好,所以暂时不推荐使用

为了以后更好地学习Linux,我们这里采用Git Bash

基本Linux命令

Git学习笔记_第8张图片
点开就能看到类似这样地画面
Git学习笔记_第9张图片
好了,这下得开始学Linux命令才能继续玩下去了
大概就是这样,这里看看就像
Git学习笔记_第10张图片
这里就提一句:
(不要尝试,不要尝试,不要尝试!
这是删库,难以跑路,后果自负)

rm -rf/

只是想说一下啊,rm是remove的简写,-r是递归,f是强制,/是根目录

开始使用

Git

配置信息

git config -l
就是查看配置列表啦
Git学习笔记_第11张图片
还可以细一点,使用

git config --system --list

查看系统配置
Git学习笔记_第12张图片
同样的可以查看用户配置

$ git config --global --list

在这里插入图片描述
现在我们来更改一下配置
其实如果不执行这一步配置操作的话,那么是不能提交项目的

$ git config --global user.name "Serio"
$ git config --global user.email "[email protected]"
$ #第一个是配置名称,第二个是配置邮箱

然后再使用

$ git config --global --list

查看一下配置是否成功
Git学习笔记_第13张图片系统配置会保存在Git安装目录下的etc文件中的config文件里面
用户配置会保存在C盘用户文件下的gitconfig中

在说下一个命令以前,先得提一下

Git工作原理

Git有三个工作区域:
1.工作目录
2.暂存区
3.资源库
(4.远程Git仓库)

(以下图片来自网络,好吧就是狂神说) Git学习笔记_第14张图片
1.workspace/working directory:工作区,就是平时存放代码的地方
2.index/stage:暂存区,用于临时存储,是一个文件,存储将要提交到文件列表的信息
3.repository/history:仓库区(本地仓库),能安全存储数据的位置,存储了所有版本的数据。其中的HEAD指向最新版本
4.remote:远程仓库,托管代码的服务器

git的工作流程是
1.在工作目录中添加修改文件
2.将需要进行版本管理的文件放入暂存区域
3.将暂存区域的文件提交到git仓库

创建Git仓库

有两种方式:
1.本地新建仓库
2.克隆远程仓库
大概涉及到以下六个命令
(没错,图片依旧来自狂神说)
Git学习笔记_第15张图片
本地搭建

$ git init

Git学习笔记_第16张图片
注意这是个隐藏文件,所以要勾选显示隐藏文件才看得见
Git学习笔记_第17张图片
远程克隆
首先我们先建立一个远程仓库
(由于hub比较卡顿,所以我们这里用ee)
Git学习笔记_第18张图片

$ git clone "https://gitee.com/Serio/test.git"

Git学习笔记_第19张图片
然后同样的我们就得到了这个库

这个时候可能就有人要问了,这都下载到c盘去了,要怎么下到指定路径呢?

这还是先得用cd等命令
Git学习笔记_第20张图片
比如这样就进入了e盘,然后建立仓库之类的就会在e盘下进行

文件操作

文件有四种状态:
1.Untacked:未跟踪,这个文件在项目中,但是没有传到git库里面,不参与版本库,
在git add命令执行后改变为Staged暂存


2.Unmondify:文件已经传入库,未修改,即版本库中文件快照内容与文件夹中内容完全一致,
此后如果执行git rm命令,那么就会被移除
如果被修改,那么状态变为Modified


3.Modified:修改过,
在执行git checkout命令后撤销修改内容,返回Unmodify状态
也可以在执行git add后变为Staged


4.Staged:暂存,
执行git commit后将提交到库中,此时库中文件又和本地文件一致了,文件又变为Unmodify
执行git reset HEAD filename那么就会取消暂存,回退到Modified状态

实际操作示例
首先我们新建一个文本
Git学习笔记_第21张图片

$ git status "LEC牛逼"

Git学习笔记_第22张图片

$ git add "LEC牛逼.txt"

Git学习笔记_第23张图片

$ git commit -m "这是第一次提交测试"

Git学习笔记_第24张图片
当然,如果我们不想让每一个文件都上传,那么可以定义一个扩展名为gitignore的文件
Git学习笔记_第25张图片
配置内容依次解释为,忽略根目录下的TODO文件,忽略所有txt文件,但是"LEC牛逼.txt"除外

远程仓库

我们先得有一个ssh公钥

$ ssh-keygen -t rsa

-t表示采用加密,rsa是加密的方式
一路enter就好
Git学习笔记_第26张图片
然后去这里找找生成的公钥
在这里插入图片描述
Git学习笔记_第27张图片
然后打开其中扩展名为pub的那个文件,复制里面的内容,粘贴到
(这里我们用国内的远程库吧)
Git学习笔记_第28张图片
添加了ssh公钥之后
再新建一个库
Git学习笔记_第29张图片
如果不太清楚开源协议的话,可以点框起来的部分
Git学习笔记_第30张图片
然后一路我不在乎————下一步下一步(好吧这个根据个人需求来就行)
Git学习笔记_第31张图片
得到远程仓库之后,我们就不同本地的了(原来那个可以删了)
来克隆一下

使用IDEA集成开发

idea创建一个普通项目
Git学习笔记_第32张图片
这里我的IDEA帮我自动配置好了这两个东西
打开看看
Git学习笔记_第33张图片
Git学习笔记_第34张图片
然后我们把下载到本地的git文件的内容移动到工程文件中
Git学习笔记_第35张图片
这里红色的就是代表选中状态,绿色代表已经提交
右上角也多了几个按钮
在这里插入图片描述
底部也多了终端的几个选项
Git学习笔记_第36张图片
接下来我们在终端使用

$ git add .

添加所有文件到暂存区
Git学习笔记_第37张图片
当然鼠标右键找到git选项中的add,也能实现同样的效果
添加到暂存区之后的文件都变绿了
Git学习笔记_第38张图片
然后输入一下描述信息,直接提交就好了

Git学习笔记_第39张图片
当然,使用

$ git commit -m "这是第一次提交阿巴阿巴阿巴.."

也能达到同样的效果

当看到这个的时候
在这里插入图片描述
就已经提交到本地仓库了
如果要同步到远程,可以使用

$ git push

(终端不需要加$;push后面什么都不写)
或者点击IDEA的快捷按钮:推送,即可完成同步
Git学习笔记_第40张图片
这就很棒了

分支

主干叫master,一定要对应最优的稳定运行版本
查看本地库的分支

$ git branch

Git学习笔记_第41张图片
查看远程库的分支

$ git branch -r

Git学习笔记_第42张图片
三个开发小组A B C
B会调用A的接口
C会调用A,B的接口
那么如果B在使用的过程中修改了A的代码
C要调用A原本的代码时,就产生了冲突

所以这就需要分支,使得各个版本不冲突
(C调用A1.0,B修改后产生的记为A2.0这样就可以了)

另外,最后ABC三组合并文件,如果发生冲突
那么可以修改冲突文件重新提交,选择保留其中一种可行的方案即可

相关操作见下图,当然下图依旧来自网络(好吧就是狂神说)
Git学习笔记_第43张图片

协同开发实操

这个得等等队友了…
后面再更新
Git学习笔记_第44张图片

你可能感兴趣的:(后端,git)