今天是2021/9/12,计划和同学一起开发微信小程序了,看了下语法大概就是html和css以及Vue的魔改,这个问题应该不大。重点是我们觉得这也是第一个正正经经的可以算得上项目的东西了,所以还是决定好好打磨它,于是乎这个时候就想到了版本管理的问题,自然而然就得开始学习Git了
比如今天觉得第一版不好,就出了第二版,但是第一版怎么办呢,总不能删了吧?万一哪天又觉得第一版好怎么办?
存在本地又不好大家合作开发,所以我们需要一个中间的平台来储存众多版本——这就是Git诞生的必要性
1.本地版本控制
在本地记录保存每次更新,适合个人开发用
很方便,但是也很明显,很low
2.集中版本控制——SVN
所有版本都放到一个服务器,这样一来就方便协同开发了
(缺点是不联网就很难办,另外,要是服务器炸了就可以重开了)
3.分布式版本控制——Git
每个人都拥有完整的代码,所有的版本信息都会同步到每一个开发者,
断网的时候可以本地提交,有网络时会自动同步,这样一来只要有一个还保留着代码,就能很快恢复数据
(缺点是,安全隐患大,容易出内鬼;另外这同一份文件多次存储,加大了空间消耗)
(欸,等等,这难道是区块链??w(゚Д゚)w,算了,先学会用再说
官网下载比较慢的话,
那么就试试镜像下载吧,相信用过npm的应该很熟悉了:git镜像下载
进去之后选一个稍微旧一点的版本下载
64位就找64位咯
这里要注意,选择默认的文本编辑器
我选的visual studio code(虽然喜欢idea
然后管他三七二十一地,直接莽Next就完事,最后finish,安装完毕
此时鼠标右键可以看到Git的相关内容,
这里也可以看到
它们分别是:
Git Bash:Unix与Linux风格的命令行
Git CMD:Windows风格
Git GUI :图形界面版本Git,但是初学者嘛还是先学会用命令行比价好,所以暂时不推荐使用
为了以后更好地学习Linux,我们这里采用Git Bash
点开就能看到类似这样地画面
好了,这下得开始学Linux命令才能继续玩下去了
大概就是这样,这里看看就像
这里就提一句:
(不要尝试,不要尝试,不要尝试!
这是删库,难以跑路,后果自负)
rm -rf/
只是想说一下啊,rm是remove的简写,-r是递归,f是强制,/是根目录
Git
git config -l
就是查看配置列表啦
还可以细一点,使用
git config --system --list
$ git config --global --list
现在我们来更改一下配置
其实如果不执行这一步配置操作的话,那么是不能提交项目的
$ git config --global user.name "Serio"
$ git config --global user.email "[email protected]"
$ #第一个是配置名称,第二个是配置邮箱
然后再使用
$ git config --global --list
查看一下配置是否成功
系统配置会保存在Git安装目录下的etc文件中的config文件里面
用户配置会保存在C盘用户文件下的gitconfig中
在说下一个命令以前,先得提一下
Git有三个工作区域:
1.工作目录
2.暂存区
3.资源库
(4.远程Git仓库)
(以下图片来自网络,好吧就是狂神说)
1.workspace/working directory:工作区,就是平时存放代码的地方
2.index/stage:暂存区,用于临时存储,是一个文件,存储将要提交到文件列表的信息
3.repository/history:仓库区(本地仓库),能安全存储数据的位置,存储了所有版本的数据。其中的HEAD指向最新版本
4.remote:远程仓库,托管代码的服务器
git的工作流程是
1.在工作目录中添加修改文件
2.将需要进行版本管理的文件放入暂存区域
3.将暂存区域的文件提交到git仓库
有两种方式:
1.本地新建仓库
2.克隆远程仓库
大概涉及到以下六个命令
(没错,图片依旧来自狂神说)
本地搭建
$ git init
注意这是个隐藏文件,所以要勾选显示隐藏文件才看得见
远程克隆
首先我们先建立一个远程仓库
(由于hub比较卡顿,所以我们这里用ee)
$ git clone "https://gitee.com/Serio/test.git"
这个时候可能就有人要问了,这都下载到c盘去了,要怎么下到指定路径呢?
这还是先得用cd等命令
比如这样就进入了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 status "LEC牛逼"
$ git add "LEC牛逼.txt"
$ git commit -m "这是第一次提交测试"
当然,如果我们不想让每一个文件都上传,那么可以定义一个扩展名为gitignore的文件
配置内容依次解释为,忽略根目录下的TODO文件,忽略所有txt文件,但是"LEC牛逼.txt"除外
我们先得有一个ssh公钥
$ ssh-keygen -t rsa
-t表示采用加密,rsa是加密的方式
一路enter就好
然后去这里找找生成的公钥
然后打开其中扩展名为pub的那个文件,复制里面的内容,粘贴到
(这里我们用国内的远程库吧)
添加了ssh公钥之后
再新建一个库
如果不太清楚开源协议的话,可以点框起来的部分
然后一路我不在乎————下一步下一步(好吧这个根据个人需求来就行)
得到远程仓库之后,我们就不同本地的了(原来那个可以删了)
来克隆一下
idea创建一个普通项目
这里我的IDEA帮我自动配置好了这两个东西
打开看看
然后我们把下载到本地的git文件的内容移动到工程文件中
这里红色的就是代表选中状态,绿色代表已经提交
右上角也多了几个按钮
底部也多了终端的几个选项
接下来我们在终端使用
$ git add .
添加所有文件到暂存区
当然鼠标右键找到git选项中的add,也能实现同样的效果
添加到暂存区之后的文件都变绿了
然后输入一下描述信息,直接提交就好了
$ git commit -m "这是第一次提交阿巴阿巴阿巴.."
也能达到同样的效果
当看到这个的时候
就已经提交到本地仓库了
如果要同步到远程,可以使用
$ git push
(终端不需要加$;push后面什么都不写)
或者点击IDEA的快捷按钮:推送,即可完成同步
这就很棒了
主干叫master,一定要对应最优的稳定运行版本
查看本地库的分支
$ git branch
$ git branch -r
三个开发小组A B C
B会调用A的接口
C会调用A,B的接口
那么如果B在使用的过程中修改了A的代码
C要调用A原本的代码时,就产生了冲突
所以这就需要分支,使得各个版本不冲突
(C调用A1.0,B修改后产生的记为A2.0这样就可以了)
另外,最后ABC三组合并文件,如果发生冲突
那么可以修改冲突文件重新提交,选择保留其中一种可行的方案即可