• Git实操图文详解系列教程(1)——Git原理与实践



    版权声明

    • 本文原创作者:谷哥的小弟
    • 作者博客地址:http://blog.csdn.net/lfdfhl

    开发环境

    本系列教程所涉开发环境,详情如下:

    • 1、Win10
    • 2、JDK1.8
    • 3、Git2.31.1
    • 4、IDEA 2021.2.1

    参考资料

    本系列教程在撰写过程中所涉及参考资料,详情如下:

    https://git-scm.com/book/zh/v2

    http://git.oschina.net/progit/

    https://www.liaoxuefeng.com/wiki/896043488029600

    https://marklodato.github.io/visual-git-guide/index-zh-cn.html


    Git释义

    Git在英国俚语表示“混帐”的意思;该名字来源于 Linus 的自嘲:

    I’m an egotistical bastard, and I name all my projects after myself. First Linux, now Git.

    Git概述

    Git 是一个免费的、开源的分布式版本控制系统;它可以快速、高效地对软件开发领域的各种项目进行版本管理。

    Git之父

    Git是Linux创始人Linus Torvalds于2005年为Linux内核开发而创作的分布式版本管理系统。

    Git官网

    https://git-scm.com/

    在这里插入图片描述

    大家注意到Git的ICON图标没有呢?是不是有点像一颗带有枝蔓的树苗呢?

    Git下载

    请从Git官网或镜像下载Git安装文件;链接如下:

    https://mirrors.edge.kernel.org/pub/software/scm/git/

    https://registry.npmmirror.com/binary.html?path=git-for-windows/

    本教程以2.31.1为例进行讲解;图示如下:

    在这里插入图片描述

    在这里插入图片描述
    请下载安装文件并保存至本地,图示如下:

    在这里插入图片描述

    Git文档

    Git中文参考文档如下:

    https://git-scm.com/book/zh/v2

    在这里插入图片描述

    Git安装

    在此,详述Git的安装过程及其注意事项。

    请双击安装文件执行安装;图示如下:

    在这里插入图片描述
    选择安装位置;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述

    点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述
    请注意:不必修改环境变量,所以选择第一种方式;点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Next执行下一步;图示如下:

    在这里插入图片描述
    全部勾选后点击Next执行下一步;图示如下:

    在这里插入图片描述
    点击Install执行安装;图示如下:

    在这里插入图片描述
    点击Finish完成安装;图示如下:

    在这里插入图片描述
    在电脑任意位置右键菜单里选择 Git Bash Here 即可打开 Git Bash 命令行终端;图示如下:

    在这里插入图片描述

    在 Git Bash 终端里输入 git --version 查看 git 版本;图示如下:

    在这里插入图片描述
    在完成Git的安装后请配置用户签名;其作用是区分不同操作者身份。Git首次安装必须设置用户签名,否则无法提交代码。

    设置签名,命令如下:

    git config --global user.name 输入用户名再回车
    git config --global user.email 输入邮箱再回车
    
    • 1
    • 2

    查看签名,命令如下:

    git config --global user.name 回车
    git config --global user.email 回车
    
    • 1
    • 2

    示例代码:

    在这里插入图片描述

    请注意:此处设置用户签名与以后登录 GitHub(或其它代码托管中心)的账号没有任何关系。

    Git原理

    在此,简述Git的组成部分及其工作原理详解。

    组成部分

    在这里插入图片描述
    在Git中由3个本地区域和1个远程仓库构成,概述如下:

    工作区(Working Directory):本地硬盘存放代码的目录叫做工作区。

    缓冲区(Stage): 缓冲区又被称为index,它被当做工作区与本地仓库的过渡。在工作区的代码可通过add或stash命令将代码加入到缓冲区。

    本地仓库: 缓冲区的代码通过commit命令来提交至本地仓库。

    远程仓库: 本地仓库中的代码通过push命令将代码推送至远程仓库

    工作原理

    • 1.从远程仓库中clone克隆代码到本地仓库
    • 2.从本地仓库中checkout代码到工作区后再进行修改
    • 3.将修改后的代码add添加到暂存区
    • 4.将暂存区的代码commit提交到本地仓库
    • 5.将本地仓库的代码push推送到远程仓库

    在这里插入图片描述

    四种状态

    Git文件存在四种状态,详情如下:

    Untracked: 即文件未跟踪状态。表示此文件在工作区中,但并没有加入到git库不参与版本控制。在此状态下,可通过git add 将其状态变为Staged.

    Unmodify: 即文件已提交至本地仓库。本地库中的文件快照内容与工作区中完全一致。该类型的文件有两种去处:如果它被修改则变为Modified;如果使用git rm移出版本库, 则成为Untracked状态。

    Modified: 即文件已修改状态。该文件有两个去处:通过git add进入暂存staged状态;或者使用git checkout 丢弃已作的修改返回到unmodify状态,因为git checkout表示从库中取出文件覆盖当前被修改的文件。

    Staged: 即文件暂存状态。执行git commit则将修改提交到本地库,此时本地库中的文件和工作区文件一致,文件为Unmodify状态。在该状态下若执行git reset HEAD取消暂存则文件状态为Modified。

    在这里插入图片描述

    Git分支

    分支是Git非常重要的概念和功能,在此对其进行详解。

    分支概念

    在版本控制过程中常常需要同时推进多个任务。所以,可以为每个任务创建单独的分支。使用分支意味着开发人员可以把自己的工作从开发主线master上分离开来,在开发自己的分支时不会影响主线分支的运行。

    对于初学者而言可以简单地把分支理解为副本,一个分支就是一个独立的副本。
    在这里插入图片描述

    合并分支(正常情况)

    假设原本只有一个主分支master,再在此基础上创建新的分支feature-game分支。当feature-game完成开发任务后,我们需要将两个分支进行合并。

    合并思路

    将feature-game分支合并到master主分支。所以,我们应该切换到master分支再进行合并。通俗地说:我们应该站在master分支的视角进行分支的合并。

    合并步骤

    • 1、切换到master分支
    • 2、合并feature-game分支

    合并分支(发生冲突)

    当两个分支都修改了同一个文件后在合并分支可能发生冲突。通俗地说:两个分支修改同一个文件导致Git不知所措,不知道删除哪些保留哪些。所以,此时必须人为解决代码冲突。

    解决步骤:

    • 1、请打开发生冲突的文件,例如:user.java
    • 2、<<<<<<< HEAD 与 =======之间的代码是master分支的代码
    • 3、=======与>>>>>>>之间的代码是feature-game分支的代码
    • 4、请谨慎整理发生冲突的代码并删除无用的代码
    • 5、请删除<<<<<<< HEAD和=======以及>>>>>>>等标识
    • 6、请执行git add user.java 将文件添加至暂存区
    • 7、请执行git commit -m "merge codes"提交代码至本地库
    ------未发生合并冲突的code------
    ------未发生合并冲突的code------
    ------未发生合并冲突的code------
    <<<<<<< HEAD
    master分支的代码
    =======
    feature-game分支的代码
    >>>>>>>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    分支与指针

    其实,分支名master、feature-game 都是指向具体版本记录的指针。当前所在的分支由 HEAD决定的。所以,创建分支的本质就是多创建了一个指针。

    如果HEAD指向 master,那么我们现在就在 master 分支上。
    如果HEAD指向 feature-game,那么我们现在就在 feature-game 分支上。

    也就是说:切换分支的本质就是移动 HEAD 指针。

    在这里插入图片描述

    Git团队协作

    在此,以示例的形式介绍Git在团队开发中协作。

    • 1、岳不群利用 git 初始化自己的本地库并写了一套华山剑法
    • 2、岳不群利用push 命令将自己的本地库推送到远程的代码托管中心
    • 3、令狐冲通过 clone 命令将剑法完整地复制到自己的本地库
    • 4、令狐冲在以往的基础上修改几招之后将自己的本地库 push 到远程代码托管中心
    • 5、岳不群通过 pull 命令拉取令狐冲修改的招式来更新自己本地库中的剑法。

    在这里插入图片描述

  • 相关阅读:
    云计算 - 1 - 三虚拟机Hadoop的安装和配置
    【无标题】
    十几张高清世界地图
    通过平台生态系统加速业务创新
    python版超市信息管理系统源代码,基于tkinter带界面
    JavaOOP-封装、继承、多态、接口
    算法设计与分析复习知识
    leetcode_力扣_84. 柱状图中最大的矩形
    什么是顶点颜色
    ES6 Promise详解
  • 原文地址:https://blog.csdn.net/lfdfhl/article/details/125815648