git入门

1 入门

1.1 版本控制

版本控制:一种 记录对文件或文件集的更改 的系统,每对文件或文件集做一次修改都可以生成一个版本,用户可以在之后重新获取想要的某个版本。
版本控制系统(Version Control System VCS),可以实现一下功能:

  1. 将选定的文件恢复到以前的状态;
  2. 将整个项目恢复到以前的状态;
  3. 比较项目文件随时间的改变(不同时间都做了哪些修改);
  4. 谁最后修改了导致问题的内容等。

1.1.1 本地版本控制VCSs

在这里插入图片描述
本地版本控制:使用数据库,将文件的不同版本都保存在本地电脑上,想使用哪个版本就从数据库获取对应的文件内容。
最流行的版本控制工具是RCS系统,将补丁集(新旧文件之间的差异)保存在磁盘上,通过添加某个时间点的补丁,实现将文件恢复到该补丁对应的文件内容。

1.1.2 集中式版本控制CVCSs

在这里插入图片描述

集中式版本控制是为了实现不同开发人员在不同主机上协作开发,将所有版本化文件放在一个服务器上,多个主机可以向该服务器提交文件更改或下载文件。
集中式版本控制的优缺点
优点:

  1. 每个开发人员可以知道项目上的其它人员在做什么;
  2. 项目管理员可以控制谁可以做什么;
  3. 管理CVCS比管理每个客户端上的本地数据库容易得多。

缺点:

  1. 集中式服务器代表性的问题:单点故障,如果服务器停机,在停机期间没有人可以保存他们正在处理的任何内容的版本更改;
  2. 如果服务器的中央数据库所在硬盘损害,就会失去整个项目的版本更改历史。

1.1.3 分布式版本控制DVCSs

在这里插入图片描述

  1. 分布式版本控制中,客户端存放整个服务器存储库的镜像,包括所有版本更改历史,即每个克隆都是所有数据的完整备份。简单的理解为服务器上存放的所有文件,客户端都有一份。
  2. 尽管服务器出问题时,不能协作,但等到服务器修复以后,就可以将客户端存储库复制回服务器进行恢复。Git就是分布式版本控制。

1.2 Git历史

Linux内核维护的早期(1991-2002)一直使用的是补丁或存档文件进行传递,到2002年开始使用分布式版本控制系统BitKeeper。但是2005年Linux开源社区与BitKeeper公司关系破裂,BitKeeper公司收回了免费权限。这促使Linux开发社区开发自己的工具,2005年分布式版本控制系统Git诞生。其目标是:速度、设计简单、强烈支持非线性开发、完全分布式、能够处理大型项目。

1.3 什么是Git?

理解git的工作原理有助于你高效的使用git

1.3.1 Snapshots(快照),不是差异

其它版本控制工具:
大多数版本控制系统将信息存储为基于文件的更改列表,如CVS、Subversion、Perforce等,它们将存储的信息是为一组文件,以及随时间推移对每个文件所做的更改。这种称为基于增量式的版本控制。简单的理解就是大多数版本控制系统,每次只保存版本更改所涉及到的文件。
在这里插入图片描述

如图,每个版本更改只保存涉及到更改的文件,没有发生改变的文件不用再次保存
Git版本控制工具:
而Git在我们每次提交更改或者保存时,都会拍下所有文件当时的样子。并存储该快照的引用。为了高效,git不会重复保存没有更改的文件,指挥链接到该文件已经存储的前一个相同的文件
在这里插入图片描述

如图,Git每次版本更改时,Git都会拍下所有文件当时的样子,并存储对该快照的引用

1.3.2 所有操作都是本地操作

由于Git在本地保存了整个项目历史,这使Git的大多数操作都仅仅是在本地文件进行操作,因此Git避免了网络带宽限制,其速度非常快,每个操作似乎都是即时的。
例如,当你想浏览项目的历史时,你不用去服务器获取这些信息,直接在本地副本中查找项目历史即可。而且如果你处于离线状态,你可以先对文件做出更改,然后上传的本地副本,网络连接以后再上传到服务器。

1.3.3 Git具有完整性

任何文件保存在Git之前都要进行校验和,整个校验和作为文件名保存文件,这意味着git不知道时就不能对文件进行更改。
Git的这种校验机制被称为SHA-1 hash,它们由40个十六进制字符组成的字符串,根据git种文件结构的内容计算。
git保存文件时使用的不是文件名而是该文件内容的hash值。

1.3.4 Git通常只添加数据

这里不太理解
当你在Git中执行操作时,几乎所有操作都只向Git数据库中添加数据。很难让系统做任何不可撤销的事情,也很难让它以任何方式擦除数据。与任何VCS一样,您可能会丢失或弄乱尚未提交的更改,但在将快照提交到Git后,很难丢失,尤其是当您定期将数据库推送到另一个存储库时。

1.3.5 三种状态

需要牢记
Git有三种主要的文件状态:已修改、暂存和提交

  1. 已修改modified:你已经更改了文件,但还没有提交到数据库;
  2. 暂存staged:你已经在当前版本种标记了修改后的文件,以便进入下一个提交快照;不太理解
  3. 提交commited:数据安全的存储在本地数据库中。

引出了Git项目的三个重要部分:工作树、暂存区和Git目录
在这里插入图片描述

  1. 工作树:是项目的一个版本的一次迁出,理解为项目的一个版本的副本。从Git数据库中拉出,存放在本地磁盘供你使用或修改;
  2. 暂存区:是一个文件,在Git目录中,用于存储有关下一次提交内容的信息;
  3. Git目录:是存储项目的元数据和对象数据库的地方,也是从其他主机克隆存储库时复制的内容

基本的Git工作流程如下:

  1. 在工作树修改文件;
  2. 选择性的暂存你下次想要提交的更改,只将这些更改添加到暂存区;
  3. 提交,将文件保存在暂存区,并将快照永久存储在Git目录中。

如果一个文件的版本在Git目录中,就是提交状态;
如果文件已经被修改并且加到暂存器,就是暂存状态;
如果文件被修改但没有被暂存,就是修改状态。

1.4 命令行

命令行是唯一可以运行所有git命令的地方,

1.5 安装Git

1.5.1 安装在Linux

CentOS版本,执行以下指令:
$ sudo dnf install git-all
Ubuntu版本,执行以下指令:
$ sudo apt install git-all

Git网站上有关于在几种不同Unix发行版上安装的说明,网址为https://git-scm.com/download/linux.

1.5.2 安装在macOS

  1. 最简单的方法是安装Xcode命令行工具,苹果官方Xcode下载地址https://developer.apple.com/xcode/downloads/。安装Xcode以后,如果没有安装git。可以运行以下命令安装git:
    $ xcode-select --install

  2. 去git官网下载mac安装程序,https://git-scm.com/download/mac

1.5.3 安装在windows

直接官网下载安装包:https://git-scm.com/download/win,下载后自动安装即可。

1.5.4 从源码安装git

1.6 首次安装Git

1.6.1 配置文件介绍

git config工具可以让我们获取或设置配置变量,可以控制Git的外观和操作。这些变量被保存在3个地方:

  1. [path]/etc/gitconfig文件:系统配置文件,包含该系统上的所有用户和他们的存储库的值,将--system传递给git config可以专门对该文件读写,必须使用管理员或超级用户才能修改该文件。
  2. ~/.gitconfigor~/.config/git/config文件:用户个人特有的值,通过传递--global选项来读写该文件,会影响所有存储库
  3. 当前正在使用的存储库中的config文件:具体到单个存储库,可以使用--local选项读写该文件(默认选项),需要位于一个Git存储库内的某个位置才可以使用这个选项。

每一个级别都覆盖上一个级别的值,比如.git/config中的值会覆盖[path]/etc/gitconfig中的值。

查看所有设置及其来源:$git config --list --show-origin

1.6.2 配置用户信息

  1. 每一次Git提交都会使用到用户信息,所以安装git以后首先要设置自己的用户名和邮箱地址。使用以下指令
    $ git config --global user.name "Jogn Doe"
    $ git config --global user.email johndoe@example.com

  2. 使用--global设置用户信息以后,在该系统上的每次操作都会被认为是该用户的操作,如果想对特定的项目修改用户信息,可以使用不带--global的该指令进行覆盖,如$ git config user.name "Jogn Doe"

1.6.3 设置编辑器

用户信息配置以后,可以配置默认文本编辑器,如果不配置,Git将使用系统默认编辑器。

  1. 切换其它编辑器,如Emacs:
    $ git config --global core.editor emacs

  2. 在Windows系统上,必须给出编辑器的exe文件的完整路径,如Notepad++编辑器:
    $ git config --global core editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

1.6.4 默认分支名

在使用git init创建存储库时,git会默认创建一个名为master的默认分支。可以修改分支名。如修改分支名为mian,使用以下命令:
$ git config --global init.defaultBranch main

1.6.5 检查设置

  1. 使用git config --list命令可以列出设置配置的键值对
  2. 查看值得来源,如想查看origin的值的来源:
    $ git config --show-origin rerere.autoUpdate

1.7 获取帮助

获取git综合手册页帮助,有3种方式:

  1. $ git help <verb>
  2. $ git <verb> --help
  3. $ man git-<verb>

比如,可以使用以下命令获取git config命令的手册帮助:$ git help config

使用-h选项来获取简介的帮助:
在这里插入图片描述

1.8 总结

  1. 不同版本控制系统之间区别
  2. Git的工作原理,特性
  3. git的安装
  4. git的配置
  5. 获取帮助的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值