wangwt123

Git(一)

一、Git介绍

Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,它采用了分布式版本库的方式, 不需要服务器端软件支持。可以说它是一个开源的分布式版本控制系统,用于敏捷高效地处理任何大小的项目。

Git 分布式版本控制系统 ,本地版本管理

github:公有云代码托管平台

gitlab:私有云代码托管平台

二、集中式&分布式

1、集中式

从中央代码服务器获取具体的代码,把代码下载到自己的本地,然后把代码,必须在有网络的情况下提交到中央服务器。典型的产品是SVN,所谓集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库瘫痪或者是不可访问的情况下,所有的使用者无法使用SVN,无法进行提交或者备份文件。

2、分布式

分布式版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了团队协作,会把本地数据同步到GitLab服务器或者是GitHub等代码仓库。

三、Git安装

在git的官网下载https://git-scm.com/,下载完成后,一路next即可。并将bin目录添加到path环境中。

在控制台里输入如下命令,说明Git安装成功。

四、Git配置

1、system

针对任意登录到Linux系统的用户生效

2、global

全局,只针对当前登录的用户生效,git配置写入~/.config/config

3、local

本地,只针对某一个文件夹生效。 一般配置的时候,使用的是全局配置,建议使用全局配置的方式。在windows系统里具体配置name和email如下:

五、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标签

git tag可以理解为:2022-08-12对每个版本加上一个标签。

标签涉及到的命令具体可以总结为:

git tag -a tagName -m "标签注释":创建一个标签,并且加上注释

 git tag -a 标签名称 commitID -m "标签注释"→新增标签

git tag →查看标签信息

git log --decorate →查看标签的详细信息

git log --oneline --decorate →命令如上是一样的

git show tagName →查看标签的具体详细的信息

如下图所示:

其中: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 list →查看stash区域的文件信息

git stash pop →恢复最新的stash进度到工作区

git stash pop stash_id→恢复指定的stash的进度

git stash clear →清空所有存储的stash进度

假设,在index.txt文件里新增了一部分内容,但由于可能需要干其他的事,需要放到临时空间,命令为:git stash save "备注"。

此时打开index.txt记事本,暂存区里确实没有刚刚新增的"淘宝”和"”彤“文字,它放到了临时区。

想要恢复刚刚记录的内容,输入命令:git stash pop,然后重新进入暂存区域和提交本地仓库即可。

 

posted on 2022-08-04 19:12  DOUBLE快乐  阅读(41)  评论(0编辑  收藏  举报

导航