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

Git系列详细介绍和操作

目录

1. Git Introduction

1.1 Git Directory Git工作区域

1.2 Git Workflow

1.3 File State

git cherry pick

版本回退


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 cherry pick

  • Git系列之git cherry pick

版本回退

  • Git系列之-工作区回滚
  • Git系列之Git Reset
  • Git系列之Git Revert


http://www.kler.cn/a/568172.html

相关文章:

  • Linux上构建RPM包指南
  • Android OCR技术实现与优化指南
  • Qt中的核心机制--信号与槽
  • pytorch与深度学习随记——AlexNet
  • HTML:自闭合标签简单介绍
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(6)
  • 51单片机制作彩屏触摸小电子琴STC32G12K128+RA6809+彩屏1024x600
  • 【云原生之kubernetes实战】在k8s环境下部署Vikunja任务管理工具
  • openlayers结合turf geojson面获取面积和中心点
  • 详细对比所有开源许可及其不同版本
  • c++ std::array使用笔记
  • 「Selenium+Python自动化从0到1①|2025最新环境搭建+浏览器驱动避坑指南(附验证代码)」
  • JSON(JavaScript Object Notation)
  • 【Java 基础(人话版)】Java SE vs Java EE
  • 第十五站:循环神经网络(RNN)与长短期记忆网络(LSTM)
  • redis的启动方式
  • Linux——计算机网络
  • 【SDR课堂第12讲】AD9361毛刺问题总结
  • 手写RPC框架-V1版本
  • 一周学会Flask3 Python Web开发-Jinja2模版中加载静态文件