04 | Git 原理与操作,原来是这么回事

本文详细介绍了Git的基本概念、工作流程和常用命令,包括版本控制的重要性、Git的作用与使用场景,以及工作区、版本库、暂存区等核心概念。从配置Git用户信息到创建仓库、查看状态、提交变更,覆盖了本地开发必备技能。

前言

介绍 Git 原理与使用。

一. 简介

1. 版本控制

1)什么是版本控制

  • 版本控制就是在文件的修改历程中保留修改历史,可以实现撤销之前对文件的修改操作。

2)为什么需要版本控制

  • 写文章:例如我们在 word 中写文章,通过 ctrl + z(撤销)就可以回退到文档的上一个状态。其实,word 已经自动保存了之前的内容,当按下 ctrl + z 就回退到上一个版本,再按 ctrl + z 就回到上上个版本,以此类推。
  • 写代码
    • 当代码写错的时候,可以在版本控制中选择撤回到上一个代码版本即可,不用凭借记忆来回想之前的代码内容。例如,当我们写完一段代码之后,通过 commit 命令将改动和对改动的描述信息提交,之后想回退到此版本,可以在历史版本中方便地找到,节约了大量时间。

2. Git

1)作用

  • Git 将代码的多个历史版本用一颗树的形式维护并记录下来,支持多分支和回滚操作。

  • 每次修改时都会在当前节点下创建一个新的节点,每一个节点代表一个历史版本。

  • 每个节点可以同时扩展多个分支,实现不同分支相互合并操作,满足多人合作的需求。

在这里插入图片描述

2)使用场景

a、场景1
  • 个人分模块开发一个项目时,初始开发模块1,之后开发模块2,以此列推… ,在开发过程中,希望找回之前的历史版本
b、场景2
  • 多人共同开发一个项目,每人开发不同模块,将多人的代码合并到一起,用于多人合作

二. 基本概念

1. 工作区

  • 工作区指当前的工作目录。

  • 工作区与分支结构是独立分开的,不管在哪个分支,工作区都是同一个。

2. 版本库

  • 版本库指将所有的历史版本用一颗树的形式维护起来。

3. 暂存区

  • 暂存区是工作区与版本库之前的一个桥梁。

  • 工作区会先将内容放到暂存区,然后将暂存区的内容整体存放到版本库中的某个节点。

  • 暂存区与分支结构也是独立开的,不管在哪个分支,暂存区都是同一个。

4. 历史版本

  • 版本库中的每个节点都表示一个历史版本。

5. HEAD 指针

  • 每次 HEAD 只会处于版本库分支中的某个节点,同时可以切换到不同分支。

  • 每次将当前工作区的内容存到版本库时,先将当前工作区里的内容存到暂存区,然后在 HEAD 指针所在的版本库的节点后面创建一个新节点,将暂存区里的内容放到新节点中,同时将 HAED 指针向后移动一位,这样就加入到了历史版本。


三. 本地操作常用命令

1. 区分

  • GitGitHub 是完全独立的两个东西。
  • Git 是管理本地版本,所有历史版本都存到本地的 .git 文件夹中。
  • Github云端,所有历史版本存到云端,支持图形化方式查看代码,较方便。

2. 本地操作

1)配置用户名和邮箱

  • 安装好 Git 后先设置 User 信息(参与工作人员的信息),User.name (用户名)和User.email (邮箱)。

  • –global

    • git config --global user.name xxx:设置全局用户名为xxx, 对当前用户所有仓库有效,信息记录在 ~/.gitconfig 文件。
    • git config --global user.email xxx@xxx.com:设置全局邮箱地址,对当前用户所有仓库有效,信息记录在 ~/.gitconfig
  • –local

    • git config --local 只对当前工作仓库有效,对其它仓库不生效。

2)git init(创建本地仓库)

  • 命令:git init
  • 操作:在任意目录创建一个文件夹,此时是一个普通文件夹,进入到此文件夹中执行 git init,将当前目录配置成 git 仓库(此时仓库为空),信息记录在隐藏的 .git 文件夹中。
  • 如果想删除本地仓库,直接将文件删除即可,运用 rm 文件夹名 -rf 命令即可。

3)git status(查看当前仓库状态)

  • 命令: git status
  • 查看当前仓库状态,当修改完当前文件夹,通过 git status 查看当前修改了哪些内容。

4)git add(存到暂存区)

  • 命令:git add xxx
  • git add xxx:将工作区 xxx 文件加到暂存区。
  • git add . :将工作区所有文件加到暂存区。
  • 注意是将对文件的增加,删除,修改的操作加到暂存区。

5)git diff

  • 查看当前工作区 xxx 文件相对于暂存区中 xxx 文件有哪些改变。

6)git restore --staged

  • git restore --staged xxx:将 xxx 文件从暂存区中删除。

7)git restore

  • xxx 文件尚未加入暂存区的修改(增加、误删、修改)全部撤销,即将文件恢复到暂存区里的内容。

  • 删内容:将工作区相对于暂存区的修改删掉即将工作区的内容回滚到暂存区存储的内容,如果暂存区中没有内容则回滚到 HEAD 所指向的版本。

  • 删除文件:这个操作也可以加到暂存区(可存增加文件、修改文件、删除文件),也可以持久化。如果一个文件在工作区删除且没有加到暂存区是可以通过 git restore 将文件回滚出来到工作区。

8)git commit

  • git commit -m "给自己看的备注信息":将暂存区的内容提交到版本库中的节点,持久化。

9)其它一些命令

  • git rm --cached xxx:不需要用 git 对其进行管理,将文件从仓库索引目录中删除。

  • git log:查看当前分支的所有历史版本(前 7 个字母是每个版本的 id 号)。当前分支:从初始(从下往上看)到当前 HEAD 所在节点的路径上的所有节点。git log --pretty=oneline:将上述内容显示在一行,方便查看。

  • git reset --hard HEAD^:回滚到上一个版本,几个 ^ 表示回滚到上几个版本,回滚的过程不会将分支上的节点删除。

  • git reflog:因为 git log 只能显示从初始到 HEAD 指针路径上的版本,git reflog 显示 HEAD 指针经过的所有历史记录,可以找到每个版本的历史编号,这样就可以回滚到任意一个版本。

  • git reset --hard 版本号:回滚到某一特定版本。回滚到某一版本的含义:将当前工作目录下的所有被管理的文件恢复到某一版本的状态。


四、补充学习资料

[1]  https://git-scm.com/book/zh/v2

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个写代码的修车工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值