一、Git概念

1.1、Git定义

  Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

1.2、Git特点

  • 直接记录快照,而非差异比较
  • 近乎所有操作都是本地执行
  • 使用 SHA-1 散列(hash,哈希)保证数据完整性
  • Git 一般只添加数据

1.3、Git三种状态及三个工作区域

三种状态

  已修改(modified):表示修改了文件,但还没保存到数据库中。

  已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  已提交(committed):表示数据已经安全的保存在本地数据库中。

另一种角度下Git文件的两种状态:

  已跟踪:已跟踪文件指被纳入了版本控制的文件,在上一次快照中有其记录。在工作一段时间后,它们的状态可能处于未修改、已修改或已暂存。

  未跟踪: 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

Git 文件生命周期图:

三个工作区域

  工作目录:对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

  暂存区域:是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 也被称作“索引”,一般还是叫暂存区域。

  Git 仓库: Git 用来保存项目的元数据和对象数据库的地方。从其它计算机克隆仓库时,拷贝的就是这里的数据。

1.4、Git 工作流程

  1. 在工作目录中修改文件(已修改状态)。

  2. 暂存文件,将文件的快照放入暂存区域(已暂存状态)。

  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录(已提交状态)。

二、Git配置文件

2.1、配置文件分类

(1). 通用配置文件:/etc/gitconfig ,对所有用户及其仓库的通用配置: git config --system

(2). 用户配置文件: ~/.gitconfig 文件或 ~/.config/git/config文件,只适用于该用户:git config --global

(3). 仓库配置文件: .git/config,针对该仓库,即当前使用仓库的 Git 目录中的 config 文件。

说明:

  每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。

三、Git配置文件相关命令

获取帮助

##使用帮助的三种方法,<verb>为查询的命令
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
##查询config命令用法
$ git help config

配置用户信息

##设置用户名称、邮件地址,Git会将其写入每一次的提交信息中
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

注意:

  使用了 --global 选项一次即可,之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

##针对特定项目使用不同的用户名称与邮件地址
cd "目标目录"
$ git config user.name "John"
$ git config user.email john@example.com

文本编辑器

##设置Git默认使用的文本编辑器
$ git config --global core.editor vim (系统默认)
$ git config --global core.editor emacs
$ git config --global core.editor vi

检查配置信息

##列出 Git 所有能找到的配置
$ git config --list
##列出 Git 的某一项配置:git config <key>
$ git config user.name

注意:

  列表中存在重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如:/etc/gitconfig 与 ~/.gitconfig)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置。

  • 作者:
    DeepInThought


    出处:
    https://www.cnblogs.com/DeepInThought


    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 【1】Git基础的更多相关文章

    1. [转] Git 基础 - 打标签

      2.6 Git 基础 - 打标签 打标签 同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本节我们一起来学习如何列 ...

    2. Git基础操作

      配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

    3. git基础及分支

      关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一 ...

    4. 《Pro Git》笔记2:Git基础操作

      第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...

    5. Git详解之二 Git基础

      Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

    6. 2.4 Git 基础 - 撤消操作

      2.4 Git 基础 - 撤消操作 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失 ...

    7. ###Git 基础图解、分支图解、全面教程、常用命令###

      一.Git 基础图解 转自:http://www.cnblogs.com/yaozhongxiao/p/3811130.html Git 图解剖析 git中文件内容并没有真正存储在索引(.git/in ...

    8. 【git学习二】git基础之git管理本地项目

      1.背景        git基础打算分两部分来说,一部分是对于本地项目的管理,第二部分是对于远程代码仓库的操作. git运行本地项目管理包含对于相关文件的追踪,暂存区的比較分析,提交,撤销等功能. ...

    9. Git基础教程(二)

      继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...

    10. Git详解之二:Git基础

      Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到 ...

    随机推荐

    1. Spring Aop(十)——编程式的Pointcut

      转发地址:https://www.iteye.com/blog/elim-2396526 编程式的Pointcut 除了可以通过注解和Xml配置定义Pointcut之外,其实我们还可以通过程序来定义P ...

    2. 如何将Nginx注册为系统服务,开机自启动

      亲测有效! 一般程序员在实际工作中,除了敲代码,很少有机会实际接触操作其它东西,例如服务器环境搭建,项目部署等等,不是领导信任或项目组核心成员,应该是没有机会实际接触的,只能通过网上资料稍微了解一下. ...

    3. 【算法导论】--分治策略Strassen算法(运用下标运算)【c++】

      由于偷懒不想用泛型,所以直接用了整型来写了一份 ①首先你得有一个矩阵的class Matrix ②Matrix为了方便用下标进行运算, Matrix的结构如图:(我知道我的字丑...) Matrix. ...

    4. zabbix监控mysql主从同步和延迟

      https://blog.csdn.net/natmazz/article/details/90581490 https://www.cnblogs.com/01-single/p/10602610. ...

    5. SQL SERVER 字符串函数 REPLACE()

      定义: REPLACE()返回用另一个字符串值替换原字符串中出现的所有指定字符串值之后的字符串. 语法: REPLACE ( string_expression , string_pattern , ...

    6. [HihoCoder-1424] Asa's Chess Problem

      有上下界的费用流 #include <stdio.h> #include <algorithm> #include <queue> #include <cst ...

    7. HTTP协议的简单了解

      1. 用于服务端和客户端通信 客户端发送请求,服务端提供资源: 通过URI定位资源. 2. 通过请求和响应交换进行通信 客户端发送请求,服务端响应请求并返回数据: 请求报文:请求方法.URI.协议版本 ...

    8. MyBatis使用小结

    9. django中的缓存 跨域问题(同源策略)

      django缓存机制 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...

    10. 笔记-2:python基本数据类型

      1.数字类型 1.1 整数类型 整数类型有4种进制表示:十进制,二进制,八进制,十六进制,默认情况下,整数采用十进制. 整数类型有4种进制:十进制. 二进制. 八进制和十六进制. 默认情况, 整数采用 ...