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

Posted 谷哥的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git实操图文详解系列教程——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 输入邮箱再回车

查看签名,命令如下:

git config --global user.name 回车
git config --global user.email 回车

示例代码:

请注意:此处设置用户签名与以后登录 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分支的代码
>>>>>>>

分支与指针

其实,分支名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 命令拉取令狐冲修改的招式来更新自己本地库中的剑法。

以上是关于Git实操图文详解系列教程——Git原理与实践的主要内容,如果未能解决你的问题,请参考以下文章

Git实操图文详解系列教程——IDEA集成Git

Git实操图文详解系列教程——IDEA集成Git

Git实操图文详解系列教程——GitHub核心操作

Git实操图文详解系列教程——GitHub核心操作

Git实操图文详解系列教程——IDEA集成Gitee

Git实操图文详解系列教程——IDEA集成Gitee