当前位置: 首页 > news >正文

Git系列详细介绍和操作

目录

前言

1. Git Introduction

1.1 Git Directory Git工作区域

1.2 Git Workflow

1.3 File State

归属系列:




1. Git Introduction

As you may remember from What is Git? Git doesn’t store data as a series of changesets or differences, but instead as a series of snapshots.


1.1 Git Directory Git工作区域

Git本地有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的转换关系如下:

Table 3 Work area definition

ID

Item

Description

1

工作区

Workspace

平时存放代码的区域。

2

暂存区

Stage Area

临时存放改动,本质是文件,保存提交列表信息。

3

本地仓库

Local Repository

安全存放数据的区域,包含提交的所有版本的数据,HEAD指向最新放入仓库的版本。

工作区的隐藏目录<.git>即本地仓库

4

远程仓库

Remote

代码托管的服务器。可以理解为ICS的Git服务器。

The below figure shows the relationship between Workspace, Stage Area in Local Repository and Local Repository.

1.2 Git Workflow

The workflow in Git is that:

  1. 在工作目录中添加、修改文件
  2. 暂存à将要进行管理的文件放入暂存区域
  3. 提交à将暂存区域的文件提交到Git本地仓库
  4. 推送à将本地仓库分支推送到远程服务器

The files managed in Git has three states:

  1. Modified 已修改
  2. Staged 已暂存
  3. Committed 已提交

1.3 File State

GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用:

  1. SHA-1算法计算文件的校验和

Table 4 Four status of file

ID

Item

Description

1

Untracked

未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制。 通过git add 状态变为Staged.

2

Unmodified

文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两种去处:

  1. 如果它被修改, 而变为Modified。
  2. 如果使用git rm移出版本库, 则成为Untracked文件。

3

Modified

文件已修改, 仅仅是修改, 并没有进行其他的操作。这个文件也有两个去处:

  1. 通过git add可进入暂存staged状态。
  2. 使用git checkout 则丢弃修改过, 返回到unmodified状态, 这个git checkout即从库中取出文件, 覆盖当前修改。

4

Staged

暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodified状态. 执行git reset HEAD filename取消暂存,文件状态为Modified。

Figure 1 Transfer relationship between four states

1.4 WorkspaceßàLocal Repository

将暂存区的内容提交到本地仓库中。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id。

$ git commit [file1] [file2] ... -m [message]

引用部分

版本回退

Git系列之-工作区回滚

Git系列之Git Reset

相关文章:

  • Flutter系列教程之(5)——常用控件Widget的使用示例
  • 深入理解 Spring 中的 `ThreadPoolTaskExecutor` 与 `ThreadPoolExecutor`
  • CC攻击防御策略全解析:技术实现与代码示例
  • 【C/C++】理解C++内存与Linux虚拟地址空间的关系---带你通透C++中所有数据
  • 【堆】堆的基本概念及操作,堆与优先队列
  • 航空装配自动化神器Ethercat转profient网关搭配机器人精准控制
  • 文章表中文章内容content字段存富文本数据,在大量数据的前提下关于优化查询速度的思考
  • Docker 高级网络配置
  • 渗透测试【绕过过滤order by 、limit】
  • 用DeepSeek来帮助学习three.js加载3D太极模形
  • 无人机遥控器的亮度 和 两个工作频率
  • python中的JSON数据格式
  • android keystore源码分析
  • 代码随想录算法训练营第五十天| 动态规划12
  • centos9之ESXi环境下安装
  • windows设置暂停更新时长
  • <02.26>Leetcode
  • 力扣LeetCode:1472 设计浏览器历史记录
  • 驭势科技9周年:怀揣理想,踏浪前行
  • 《Linux系统编程篇》共享内存(Linux 进程间通信(IPC))——基础篇
  • wordpress 文章数据表/石家庄百度快速排名优化
  • 品牌网站建设找顺的/网络营销带来的效果
  • 网站建设工作室介绍范文/软文形式推广产品
  • 用vs2015做网站教程/关键字参数
  • 外贸网站建设经验/产品推广渠道有哪些方式
  • 江西建设质量检测网站/网站模板设计