Git学习笔记-1.Git基础知识

news2024/11/24 16:31:16

Git 食用方法

1.简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

相信很多同学抄作业写作业的时候多多少少都见过git clone xxx这样的命令,这也算与Git结识的一个奇怪方式?

值得一提的是,Git 是由Linux内核大爹Linus开发的。更多的简介的就不多提了,感兴趣可以去看更多大佬的科普文章。

2.Git 安装

I.Windows平台安装

首先到官网下载Git的安装包:https://gitforwindows.org/

如果官网慢,可以用国内的镜像:https://npm.taobao.org/mirrors/git-for-windows/

下载完成后安装,如果无特殊需求,可以一路无脑点到底。

II.Debian系安装

一般来说,应该系统都会自带Git。但如果没有的话就自己安装一下:

$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
$ sudo apt-get install git
$ git --version

III.RedHat系安装

$ sudo yum install -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
$ sudo yum install -y git
$ git --version

3.Git 基础配置

在安装好Git后,你并不能直接使用他(如果只要clone的话除外),而是需要进行一些基础配置。

Git 的配置可以使用git config命令进行编辑和查看:

如果要查看所有配置信息:git config --list

如果要查看单个变量信息:git config var_name

Git的配置文件储存在个人用户目录下的.gitconfig文件中(Windows和Linux均为该目录)

以下介绍一些基本的配置:

I.用户信息

用户信息主要指用户名和电邮。为什么要配置这个东西呢?因为本地仓库与远程仓库绑定后,在Git版本历史记录中是要记录每个更改是由哪个用户完成的,因此需要这个标识来区分不同用户的操作记录。

用户信息分为两种:针对全局的用户信息和针对项目的用户信息。在某个项目中,如果没有配置针对该项目的用户信息,则默认使用全局的配置。

  • 配置全局个人用户名和电子邮件地址:

    $ git config --global user.name "your_name"
    $ git config --global user.email your_email@server
    
  • 针对项目配置个人用户名和电子邮件地址,只需要去掉--global即可:

    # 首先确保当前路径位于待配置的项目下
    $ git config user.name "your_name"
    $ git config user.email your_email@server
    

II.默认文本编辑器

Windows就基本不用配置了,Linux需要注意,默认的文本编辑器为vivim,如果需要修改(比如修改为Emacs):

$ git config --global core.editor emacs

III.差异分析器

同样,一般不会修改这个配置。但如果要改用 vimdiff 的话(例子):

$ git config --global merge.tool vimdiff

4.Git的基本结构

画一张图来解释Git的基本结构:

在这里插入图片描述

  • 工作区: 工程代码的主要存放位置,也是进行开发的位置
  • 暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库: 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

这张图的理解非常重要,它是Git操作的基础。图中有两个大箭头和标签:

  • add:即对应git add操作,他将工作区的代码加入暂存区。暂存区的Index是一个索引文件。存放的是暂存区的整个目录树的信息,并且为目录树中的每个文件都保存了时间戳和长度。

    git add 将某个文件添加到暂存区的时候,index文件中添加了这个文件的基本信息。

    当我们修改了工作区的某个文件,这会导致该文件的时间戳发生变化,而index里面存放的仍然是旧的信息,如果此时当我们执行git status命令来检查版本库的状况,会有下列判断发生:

    • git status就会用config.js的时间戳和长度和index文件里面保存的config.js的时间戳和长度进行比较。
      • 如果相同,则认为没有改变,此时会简单的将最新的config.js的时间戳信息更新到index文件中
      • 如果发现不同。git status会继续用config.js的文件现在的内容和旧版本的config.js(保存在.git/objects中)的内容进行比较,提示内容发生改变。但是并不更新index文件中的config.js的时间戳信息。
  • commit:即对应git commit操作,他将暂存区的修改提交到代码仓库。HEAD标签指向当前正在开发的某个分支,所有的分支构成了整个仓库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【树莓派不吃灰】兄弟连篇③ 用户和用户组、权限管理、文件系统管理

目录1、用户和用户组1.1 用户配置文件1.1.1 /etc/passwd1.1.2 /etc/shadow1.1.3 /etc/group、/etc/gshadow1.2 用户管理相关文件1.3 用户管理命令1.3.1 useradd1.3.2 passwd1.3.3 usermod1.3.4 chage1.3.5 userdel1.3.6 su1.4 用户组管理命令2、权限管理2.1 ACL权限2.1.1 ACL权…

华为数字化转型之道 实践篇 第八章 数字化交易:让做生意简单、高效

第八章 数字化交易:让做生意简单、高效 交易流对于大多数To B企业而言都是核心业务流之一。交易流既包括信息流,它即关乎客户的满意度,又直接影响企业经营业绩的好坏。 To C场景的挑战在于简单的事情如何在短时间内做亿万遍。而To B场景与此恰恰相反,交易的数量没那么多,…

go语言并发编程(中)

go语言并发编程中并发安全和锁互斥锁Mutex读写锁信号量&条件变量单例模式&time包方法协程池并发安全和锁 互斥锁Mutex 有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞…

夹抱式伸缩货叉料箱多层穿梭车立体库|海格里斯HEGERLS高速穿梭车按需定制

近年来,随着互联网的不断普及,电子商务迅速发展起来,客户订单商品呈现出品种多、批量少、交货期短的特点,使得供货商物流配送中心货架存储密集度不断提升,物料出入库频率越来越高,小件拆零拣选量与日俱增&a…

m基于5G毫米波场景Salen-Valenzula信道建模与matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着通信技术的不断发展,现有的通信系统已经无法满足人们各个方面的需求,为了解决这个问题,5G通信技术应运而生。5G技术拥有更高的通信传输速率,更…

如何实现一套优雅的Baas查询语言?

Baas平台内,同一区块链底层接口数据可能会被应用在不同的业务场景下,因此需要进行筛选或者排序等操作。为满足此类需求,通常后端需要开发新的接口或增加新的字段以满足业务诉求。但随着需求业务不断变更,往往不可避免地导致接口的…

Activiti初识

以前 在没有工作流引擎的时候,要实现流程控制,我们需要在数据库中定义表,然后采用状态字段去跟踪流程的变化:比如是否到下一个流程; 然后到下一个角色执行的时候,我们需要判断用户是否具有审批的权限&…

HFSS使用经验

目录 一、如何找到Project工程变量 二、coverlines是什么东西 三、参数建模的第一步 四、让HFSS模型居中的快捷键CtrlD 五、关于介质颜色的修改 六、如何在HFSS中添加变量 七、如何绘制微带线 八、如何绘制带缺口的微带线谐振腔 九、如何设置激励源 十、HFSS如何镜像…

关于一致性问题的简单总结

一、场景引入 在随着人类的发展过程,由于人类是一群人,而非单个人,并相互联系,为了基本的生存或更美好的精神追求,出现了分工协作(单个人无法完成)的概念。人性是具有追求极致、美化的特性&…

【SQL】字符串处理函数

文章目录修复表中的名字left(string, count)substr(string, pos, len)按日期分组销售产品group_concat患某种疾病的患者修复表中的名字 将name的首字母大写,其余字母小写 select user_id, concat(upper(left(name, 1)), lower(substr(name, 2))) as name from User…

【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 全连接层与线性回归 神经网络模型也是参数学习模型,因为对它的学习只是得到神经网络参数的最优值,而神经网络的结构必须事先设计好。如果确实不能通过改进学习过程来达到理想效果,则要重新设…

linux基础学习-用户权限相关命令

用户权限相关命令 用户和权限的基本概念 基本概念 用户是linux系统工作中的重要的一环,用户管理包括 用户 和 组 管理在linux系统下,不论是由本机还是远程登录系统,每个系统都必须有一个账号,并且对于不同的系统资源拥有不同的使用…

银河系中心黑洞的首张照片

说到黑洞,那就不得不提起我们的家园银河系中心的大黑洞,在今天这张照片出来之前,所有关于银河系黑洞的描述都是推测、理论,而今天成为了现实! 2019年,同一团队拍摄了梅西耶87星系(M87&#xff0…

文本分类优化方法

文本分类优化方法 文本分类是NLP的基础工作之一,也是文本机器学习中最常见的监督学习任务之一,情感分类,新闻分类,相似度判断、问答匹配、意图识别、推断等等领域都使用到了文本分类的相关知识或技术。文本分类技术在机器学习的发…

用 Markdown 快速生成漂亮的 Latex 伪代码

参考:在 Markdown 中书写伪代码 文章目录配置 VSCode编写 Latex 源码生成 pseudocode配置 VSCode 组合: VSCode Markdown Preview Enhanced pseudocode.js 安装好 VSCode 和 Markdown Preview Enhanced 插件 按下快捷键 Ctrl Shift P,打…

定时器/计数器的基本概念

80C51单片机中有两个计数器,即T0和T1。 单片机内有一个定时器/计数器T0,可以用编程的方法将它设为计数器。当用作计数器时,它是一个16位计数器,它的最大计数值为65536。 定时器/计数器T0和T1分别是由TH0、TL0和TH1、TL1两个8位计数…

Vue3与Vue2生命周期不同点

一、前言 随着Vue3发布了两年多的时间,越来越多的小伙伴已经将老项目中的Vue2版本进行升级或者在新项目中使用到了Vue3.x的版本,今天就来总结以下Vue3相较于Vue2升级的生命周期不同点在哪。 二、生命周期 下面是生命周期对比图: Vue2Vue3…

JMeter基础入门

目录:导读 一、概述 二、Jmeter目录文件讲解 结语 一、概述 JMeter是Apache下一款在国外非常流行和受欢迎的开源性能测试工具,JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。 1、压测不同…

ValidateCode验证码的使用详解(初学看完都会用)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

Android 进阶——性能优化之电量优化全攻略及实战小结(二)

文章大纲引言一、在低电耗模式和应用待机模式下进行测试1、在低电耗模式下测试您的应用2、在应用待机模式下测试您的应用3、列入白名单的可接受用例4、确定当前充电状态5、监控充电状态变化6、确定当前电池电量7、监控显著的电池电量变化二、Wakelock 机制1、WakeLock分类2、申…