2022/03/31 一切从安装软件开始

一切从安装软件开始

如何在计算机当中安装软件Git

下载地址

从安装到使用的流程:

官网下载Git--->在Git的客户端生命计算机身份(根据参数不同可以控制所有的Git仓库都可以是同不同的配置)

Git客户端设置:

给计算机打上标识:

git config --global user.name "自己的用户名"
git config --global user.email "自己的邮箱"

---global参数表示这台机器上所有的Git仓库都会使用这个配置

创建版本库

什么是版本库?

版本库=仓库=repository

核心思想:

  • git通过版本库对仓库进行管理。
  • 版本库里记录了每个文件的增、删、改、查并且对所有历史版本都可以追踪。--->随时可以回滚到之前的版本

操作方法:

在本地计算机中找到为项目创建的目录,输入指令:

git init

当前目录下就会多一个.git目录

执行后说明:

git init后在项目目录下会多一个.git的文件。这个时候.git就是一个本地完整的分布式仓库。与远端的仓库交互都是通过操作这个目录去完成的

将本地代码托管到远端仓库:

先将文件提交到本地版本库,在通过本地版本库和远端仓库进行交互

将文件提交到版本库

步骤:

只有两步:选择文件、将文件提交到版本库

选择文件:

git add 需要添加的文件名(包括后缀)(可以添加多个文件,用空格隔开)
git add . (如果接'.'的话则是将所有文件都放入仓库)

把文件提交到仓库:

git commit -m "-m参数后接的是本次提交的说明"
git commit "不带参数是直接提交"

参数抽象化:

#添加文件
git add <file1> <file2> ...
#提交文件到仓库
git commit -m <message>

版本库需要注意的特点:

  1. 无法跟踪二进制文件的内容改动。只可以跟踪二进制文件大小的变更

  2. 文件的编码要保持一致

工作区、暂存区、主分支

工作区

可以简单理解为项目在本地的目录

暂存区

  • 在版本库中开辟了一块区域。git add命令只是将文件提交到了暂存区

  • 在初始化版本库的时候同步创建,称为(stage或者index)

整体工作流程:

Coding--->将修改文件添加到暂存区(在这个区域的文件可以多次添加也可以拿出来)--->在通过暂存区的文件提交到主分支

暂存区的重要性

对于git的操作而言。在版本库与工作区中间的关键交互区。git的一些指令基本上是对这个区域的控制。

一个暂存区与工作区工作关系的举例:

  • 创建文件:read.md
  • 使用指令:git add read.md--->此时文件已经被添加到了暂存区
  • 使用git status查看暂存区状态--->可以看到添加进暂存区的新文件read.md
  • 此时在工作区在创建一个文件:read.txt
  • 此时使用git status指令查看暂存区状态--->发现没有新创建的read.txt文件
  • 可以再次通过git add read.txt将新创建的文件添加进暂存区
  • 再次使用git status指令可以查看到read.txt文件

由上诉可以知道。暂存区是一个关键通道,防止工作区的内容与master分支的内容发生冲突而存在。一切冲突应该是在暂存区解决了才能push到远端仓库

版本rollback

git版本控制思想:

个人理解git把版本控制抽象成了链表和树。

  1. master只是记录了完整的项目资源状态。所有人的工作都围绕它来展开
  2. 因为只是状态。所以对于本地的项目是可以领先于master也可以落后于master
  3. 对于主链上的项目结构在merge之前必须在缓存区报错工作区的结构和主链的项目结构除了暂存区文件以外的其他文件都一致。如果不一致则需要解决冲突
  4. 在一条主链上可以开出很多节点(branch)。每一个branch都是一个完整独立全部的项目资源
  5. git会给每次对master主链的修改打上一个标签。这个标签相当于一个指针
  6. git的项目中。只存在head指针指向的版本号不同。不存在真正意义上的删除

整体流程:

创建文件--->git add 文件名将文件添加到暂存区--->git commit -m 本次提交说明将文件提交到远端的master分支

当文件成功的提交到了远程仓库就会有一个版本号

可以查看最近提交的三个版本号(在不同的分支查看到的就是该分支下的三个版本号)

查看当前分支的历史提交

git log
#只想查看每次提交的版本号
git log --pretty=online

结果集按照push时间进行倒叙排序。最新的在最上方

关键点:

如何理解现在我们的版本在哪?

git在初始化仓库的时候就创建了一个指针Head。该指针指向哪儿就是在哪个版本。

回退到上一个版本:

git reset --hard HEAD^
#如果是两个版本就是
git reset --hard HEAD^^
#如果是100个版本就是
git reset --hard HEAD~100

本质:

  • 更改版本指针的指向既可以实现rollback

  • 此时git log查看版本提交的版本号在此时HEAD指向的版本之后的版本号就找不到了

同理,因为只是指针的切换。那么肯定是可以往前寻找的。此时需要查询历史日志--->git不提供查询历史日志功能

所以需要查询历史指令:

git reflog
#在这里如果回滚了版本会由版本id

指向之前的版本:

git reset --hard 版本id前五位
总结
  • 重点了解Git进行版本控制的思想。个人理解是链表+树的形式。资源完全的独立开。只记录每一次的修改
  • 活用指针。HEAD在哪那么就是哪个版本
  • 暂存区的作用,解决工作区于master分支上在当前版本下的不同引起的冲突
posted @ 2022-03-31 13:12  俊king  阅读(35)  评论(0)    收藏  举报