git基础使用
什么是git
git是一个分布式的版本控制软件。
- 分布式:
场景:解决开发进度丢失问题,某人进度丢失可以从其他开发者那里找回来
 - 版本控制:能够控制开发进度并记录开发版本。
场景:软件升级版本,毕业论文修改版本,写书不停的修订版本。
 - 软件:字面意思。
场景:window上的安装包,软件,无脑下一步的安装的软件。
 
分布式能够做什么?
- 分布式存储开发进度,防止仓库信息挂掉的问题
 - 提高代码开发完整性
 
关于版本控制能够做什么?
- 良好的版本管理可以控制开发进度,掌握开发问题,统一处理问题
 - 可以多人同时开发,共同完成一个项目或者问题,减少重复工作量
 - 减少文件重复保存,浪费存储资源
 - 对版本回滚,问题排查,开发者追究起到良好的控制作用
 
git是什么
git是一个可以管理版本的软件,并且支持多人协同管理,能够有效的解决开发冲突、版本控制、文件存放等问题。并且由于其支持分布式,所以不用担心某一处版本丢失问题。并且开发能够独立与其他开发者的进度,可以实现独立版本控制与多人版本控制。
git每一次进行版本控制都只会保留修改部分的内容,不会将内容全部保存,因此不会占用太大的空间资源,因此十分适合长期、大体量、多用户、工作复杂的版本管理。
个人如何使用
git的文件关系
- 开发区:自己本地没有进入版本的的新文件或者文件被变动过
 - 暂存区:将想要提交新版本的文件存放的区域
 - 版本管理区:已经提交过版本管理的文件
为什么会有暂存区,暂存区的存在使得文件能够更加灵活的开发,假设开发超进度了,但是只需要部分功能,这样也可以很好的做版本控制。或者临时发现有些文件不需要进入版本,需要移出这个版本也需要暂存区这个功能。暂存去就代表文件走向了版本管理的流程。
 
第一次版本管理流程
如是实现:
- 进入项目文件夹根目录
 - 初始化文件夹: 
git init - 查看文件夹下所有文件状态:
git status在git命令行当中,新文件或者被修改的文件会被标识为红色
 - 将文件存储到暂存区: 
git add .add .的含义是把所有文件都添加进去。如果想要一个个的添加文件你可以使用git add 指定文件的全名(包含后缀名)。添加到暂存区之后的文件会呈现绿色。 
如果你想要把一个文件从暂存区踢出去,你可以使用命令:
git restore <filename>
- 记录一个版本: 
git commit -m "版本的名字" 
而后的管理
再第一次初始化之后,而后的版本管理步骤相比于第一次就不用执行git init命令。之后只需要继续添加你想要加入新版本的文件,将文件加入暂存区,再提交版本。
个人信息配置
git配置个人信息有利于在多人开发的时候识别版本修改来源于哪一位修改者,一般来说在第一次执行版本提交命令的时候,如果没有配置个人信息,那么一定会报错,提示让你运行命令:
1  | git config --global user.email "you@example.com"  | 
版本记录
- 如果已经提交多次,想要查看历史的版本记录,可以使用命令:
git log - 如果该版本出错了,想要找回历史版本,这个过程被称为回滚。意思就是重新滚回到历史的某一个版本,可以执行命令:
git reset --hard 版本号什么是版本号?版本号就是查看历史记录的时候展示的commit后面的一串编码。
注意: 当执行了回滚之后再使用git log就不能够查看之后的记录了,需要使用另一个命令查看:git reflog - 如果感觉查看版本不直观或者多人协同可以试试图形化查看:
git log graph 
分支的使用
什么是分支?分支是我们基于当前进度在另一方向上进行拓展开发。使用场景:
开发网站,前期准备工作已经完毕,但是现在需要转型,需要同时转向博客类型跟网盘类型,互不干扰,分成两个分支。
软件开发,开发在测试分支上,测试通过进入稳定版本。
多人协同工作,每人一个分支,到时候一起来合稿。
一人完成多项工作,每个分支一个章节,主分支用于合稿。
- 查看分支:
git branch - 创建分支:
git branch <myselfbranch> - 切换分支:
git checkout master - 创建并切换:
git checkout -b <myselfbranch> - 删除分支:
git branch -d <myselfbranch> - 合并分支:
git merge master合并分支能够让你的分支同步你合并的对象
 
结合远程仓库的个人使用
以上的操作对于个人使用已经完全足够,用于个人记录文档或者日志记录已经完全足够,但是既然git是一个分布式的框架,总会需要结合远程仓库使用的时候。对于远程仓库有GitHub、gitlab、码云等多种选择方式,这里不再过多赘述。现在结合远程仓库一起使用。
为什么要远程仓库
假设在家办公,在学校也在办公,或者在到处奔赴办公,如果想要继续保持上一次的开发进度,就必须要随身携带自己的文件。如果是以前可以选择放在U盘随身携带或者放在百度云等等。但是如果文件太大,那就比较麻烦了,每一次也是全部拷贝十分麻烦。还有可能文件丢失的可能性。
远程仓库的出现能够在云端创建一个保存文件的区域。能够一样保留开发记录,每次下载也可以只更新被更新的文件,不需要全部下载。
如何使用
注册一个远程仓库账号, 百度创建仓库教程
场景:第一次创建仓库如果你还没开始进行版本管理可以这样操作:
1  | echo "# info" >> README.md  | 
只需要在本地按顺序执行以上命令就可以了。
场景:如果已经在本地写了一些版本了,突然某天想起要不要搞个远程仓库,可以执行以下操作:
1  | git remote add origin 你仓库地址  | 
推送的时候需要填写自己的账号密码,填写你注册平台的账号名与密码。
推送与拉取
- push : 推送; pull:拉取;
 
首先必须分清那个是推送,那个是拉取。推送指的是将代码推送到远程仓库里,推送内容包括本地文件与git记录;拉取同理。
在添加远程仓库的时候,origin指的是远程仓库的名字,而master指的是分支的名字,一般默认是在主分支也就是master上。
推送跟拉取的时候由于开发进度的不同或者开发产生冲突,会出现代码合并的请求出现,所以在推送之前一定要先拉取一遍保证本地文件为最新版本以防止冲突。
冲突
场景1:远程仓库的进度大于本地进度,本地没有第一时间合并
场景2:两个个不同的人对一个地方进行了修改并且同时推送导致线上冲突
这两种冲突是需要注意的,一般情况不会发生,但是发生后就需要对代码进行合并。合并一般不使用命令行,就目前的情况已经有比较成熟的合并工具了,具体使用不再赘述。








