Git(一)
一、Git介绍
Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,它采用了分布式版本库的方式, 不需要服务器端软件支持。可以说它是一个开源的分布式版本控制系统,用于敏捷高效地处理任何大小的项目。
在控制台里输入如下命令,说明Git安装成功。
五、Git核心原理
操作的一般都是工作目录,如果执行了git init,就进去到了工作区,如果执行了git add的命令后,那么就会从工作区进入到暂存区,如果再执行了git commit的命令后,等于是从暂存区进入到本地仓库,如果再执行git push,就是从本地仓库进⼊到远程仓库。本地仓库主要记录的是所有文件的修改,删除,这些Git都会记录下来,目的是可以进行历史回退,追踪信息。
1、创建Git工作目录
首先在windows里新建一个名为“learnGit”的文件,此时在控制台里输入创建仓库的命令:git init
此时会出现:.git
从而生成git工作区。
2、创建Git暂存区域
此时在名为“learnGit”的文件下,创建一个名为“index.txt"的文件,文件里假设写入如下内容:
此时在控制台输入如下命令:git add 文件名
可以看到暂存成功,当然在暂存区域的文件也是可以进行撤销,一旦提交到本地仓库,会很难撤销。
3、提交本地仓库
使用命令:git commit -m "注释信息"
六、Git生命周期
总结上述的各个区域,它的生命周期可以完整的描述为:
git init →生成git工作区
git status →掌握git工作区的信息
git add →确认需要添加以及跟踪的文件
git commit -m "注释信息"→提交到本地仓库
七、Git日志
查看Git的日志信息,主要使用到的命令具体汇总如下:
• git log --oneline →查看简陋的信息
• git log →查看所有的日志信息
• git log -1 →显示最新的一条提交记录信息
• git log --all --graph →查看提交的版本演变
• git reflog → 记录git所有的操作,包含了提交以及回退
八、Git回退
git的版本管理是通过指针来进行管理的,这个指针就是HEAD,那么也就是说HEAD表示当前版本, HEAD^表示的是上一个版本,HEAD^^表的是上上个版本。
Git回退使用的命令为:
git reset --hard 版本ID
git reset --hard HEAD管理
备注:结合git reflog,可以回到过去,也是可以到未来的版本信息。
假设在名为“learnGit”的文件下,创建一个名为“login.txt"的文件,文件里假设写入如下内容:
此时,通过上述的命令输入即可:
九、Git标签
其中:diff是查看两个文件的差异
在windows里可以看到,再index.txt的文件里新增了"Handoop"和"Spark"
其实,在linux里会更加的直观化
十、Git分支管理
1、前言:
1-1、环境:测试环境、开发环境、预发布环境、线上/生产环境
其中:预发布环境:将测试环境(测试环境+开发环境)在还没有上线之前,先在该环境里运行一下,将问题提早暴露出来,防患于未然。
测试环境和开发环境是不一样,因为设计出的内容会涉及到不同的版本等问题,会出现混乱。
1-2、代码分支:test :测试环境、dev:开发环境、master:主干分支,专门发布到线上(预发布/生产环境)
1-3、流程:a、程序员在dev开发完的功能合并到test分支;
b、测试这边在test测试完成后,合并到master;
c、最后master 分支代码的上线。
2、创建分支:
创建分支涉及到的命令具体有:
git branch →查看当前的分支状况
git branch 分支名称→新建分支
3、切换分支
切换分支涉及到的命令具体有:
git checkout 分支名称 →切换分支
git merge 分支名称→分支的合并信息,
如下就是显示的是把test的分支代码合并到master的分支:
以上述的流程为例:dev →test →master
dev转test:
test转master
十一、Git冲突解决
假设,当程序员将dev开发完的功能更新到index.txt文件之后,此时准备合并到test分支;
转入test分支后,测试这边也将测试完的内容更新到index.txt文件,此时将dev这边的内容和测试这边的内容进行合并,但由于代码在合并的过程中会产生冲突;
上图最大红框里显示的内容为:冲突(内容):合并冲突于index.txt
自动合并失败,修正冲突然后提交 。
此时打开撰写代码的文件,会出现上图index.txt记事本出现的样子,说明确实产生了冲突,而一般合并的问题基本是由开发这边来进行解决的,此时开发这边会进行协商,来解决冲突。
假设,经过协商留下前2行的内容。
既然冲突得到了解决,此时合并到master就可以了。
十二、Git Stash
使用场景为:git stash就是把暂存区未提交的内容,临时存放到一个区域,方便日后取回来再次使用。场景可以描述为:修改一个文件后,进行了git add 文件名,但是不进行具体的commit,这个时候可能需要干其他的事,比如需要修复线上的紧急bug,那么就需要把这个临时的存放到一个区域。
git stash pop →恢复最新的stash进度到工作区
git stash pop stash_id→恢复指定的stash的进度
git stash clear →清空所有存储的stash进度
假设,在index.txt文件里新增了一部分内容,但由于可能需要干其他的事,需要放到临时空间,命令为:git stash save "备注"。
此时打开index.txt记事本,暂存区里确实没有刚刚新增的"淘宝”和"”彤“文字,它放到了临时区。
想要恢复刚刚记录的内容,输入命令:git stash pop,然后重新进入暂存区域和提交本地仓库即可。