Git版本控制原理与简单使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qianwenjun_19930314/article/details/79246449

一、使用环境准备(以下案例以mac做示例)

  • windows系统,下载安装GitBash。下载地址:https://git-for-windows.github.io/,直接双击exe文件安装。

  • linux系统(mac),直接使用终端。

  • 设置git用户,方便更改和提交代码时候与其他人的设备做区别

    //设置用户名和邮箱
    git config –global user.name “qianwenjun”
    git config –global user.email “[email protected]
    //查看设置结果,查询配置的用户名
    git config user.name

二、Git原理

  • 理解三个概念:工作区(Working Directory)、版本库(Repository)、暂存区(stage)的概念

    工作区:本地编辑代码保存的目录

    版本库:git真正工作的地方,我们的代码平时的拉取,提交都是通过这个地方。这个版本库有两个区,“stage”、“master”和“object”。

    stage:是工作区到master区的缓存区,是一个索引文件,里面包含的是文件的目录树,真正的文件内容以对象的形象是存储在obejct区,并返回对象ID给到暂存区记录。
    master:是git最重要的仓库,master区管理了我们每次提交后的文件版本以及相关信息,在master区,有一个head指针,指向最新提交的版本。
    object:git的对象库,存储的是实际的文件内容对象

    这里写图片描述

  • 几个简单命令解释刚才概念的区别

    git add :当我们本地有代码修改或新增的时候,执行此命令,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID 被记录在暂存区的文件索引中。
    常用的是:git add xxx(指定具体的文件提交),git add . (本地所有修改的文件全部提交)

  • git commit :暂存区的目录树写到版本库(对象库)中,master分支会做相应的更新。即master指向的目录树就是提交时暂存区的目录树。
    常用的是:git commit -m “xxx”(提交备注信息)

  • git checkout:会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。但是很常用,因为经常本地有修改文件,但是不想提交到代码库中,可以通过这个命令清除本地的修改。
    常用的是:git checkout .(替换所有的文件树),git checkout xxx文件 (指定文件替换)
    最最常用的是:git checkout xxx代码分支(从一个分支切换到另外的分支)

  • git status:可以查看本地代码和暂存区代码的区别。红色的代表是本地修改更新的没有提交到stage,绿色的指的是暂存区stage更新的没有提交到master。
    这里写图片描述

两个镜像

  • git镜像-工作备份:自己本地代码–>公司服务器的代码库–>数据中心服务器做备份(自动触发同步)。这样我们可以在一个无网的情况下进行push的操作,push代码到公司服务器的代码库,等到有网的时候,会自动触发公司服务器的代码库同步到数据中心的服务器做备份
    这里写图片描述

  • maven的镜像 :设置镜像库的原因有两个,1是每次直接从maven库下载会很慢,所以可以先一次从maven库中下载所有需要的jar包到镜像库,公司其他人新下载就会直接先从公司的镜像库中下载,公司镜像库没有的才会去maven库下载;2是公司打包的jar只会放在镜像库中,必须只能从公司镜像库下载才会成功,所以会出现没有配置镜像,导致下载jar失败的现象。

这里写图片描述

工作中常用到的场景

  • 下载代码:下载一般有两种链接方式(http链接和git链接,这个在gitlab上可以切换复制),这两个的主要区别就是,http链接pull,fetch和push的时候需要输入账号和密码;ssh方式的git链接,需要先设置ssh的key,这样默认每次pull,fetch和push都不需要输入账号和密码。建议初学者使用http链接的方式。

    git clone http://gitlab2.dui88.com/test-group/walle.git (可以使用http链接/git链接)

  • 若是maven工程,可以手动命令进行构建,下载所依赖的jar包,这个一般第一次下载时间会有些长,耐心等待。也可以直接在idea里使用集成工具下载

    mvn idea:idea //idea的使用者
    mvn eclipse:eclipse //eclipse的使用者

  • 切换分支,刚刚clone下来的代码分支是master的,我们需要切换到我们对应的开发分支。可以先查看下有哪些分支

    git branch -r //查看所有的分支
    git checkout duiba //切换分支到duiba
    这里写图片描述

  • 更新代码(往往上一步切换分支后也需要更新代码)

    git pull

  • 提交代码到远程库

    git status //第一步,先查看本地代码与暂存区有哪些区别,哪些文件需要提交
    git add xxx/git add . //第二步,可以选择文件进行提交,也可以全部修改的文件进行提交
    git status //第三步,保险点,再确认下提交到暂存区的文件是否符合自己的需求
    git commit -m “xxx” //第四步,提交暂存区的修改到版本库
    git push //第五步,提交代码到远程代码库,这样其他同学再更新pull操作就可以看到你新增的代码

  • 合并代码,如我们在分支duiba上并在本地有修改,此时分支master上新增了一个工具类,我们正好需要调用,该如何操作呢。因为本地有修改不能直接切换到master分支,直接切换会提示让你先提交修改的代码,但因为代码还未完成不知是否正常,不能提交,此时我们需要先将本地修改的代码暂存

    git stash //第一步,暂存本地的代码,此时本地代码与版本库的代码一致,可以切换到其他分支
    git checkout master //第二步,切换到master分支
    git pull //第三步,更新master分支的代码
    git checkout duiba //第四步,再切换到原来的分支
    git stash list //第五步,查看暂存编号,一般最近的一次(stash@{0})就是刚才我们暂存的版本
    git stash pop stash@{0} //第六步,将暂存版本号对应的代码恢复到当前分支,之前修改的代码恢复到本地工作区间
    git merge master //第七步,将刚才更新过的master分支代码合并到duiba分支上。此时duiba分支的代码就会有master分支新增的工具类,可以开心的使用啦。。
    这里写图片描述
    这里写图片描述
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/qianwenjun_19930314/article/details/79246449