git应用那点事

Git是一个开源的分布式版本控制系统,由Linux之父Linus Torvalds在2005年创建。Git的主要功能包括追踪文件变更、支持非线性开发模式、提供分支与合并的灵活性。本文详细介绍了Git的起源、特点、类型,以及Git的安装、基本操作、分支管理、远程仓库(如GitHub)的使用、标签和别名设置,适合初学者和开发者全面了解和学习Git。
摘要由CSDN通过智能技术生成

Git


一、初识Git

1.1 Git的简史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。

Linus在1991年创建了开源的Linux,Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。 到了 2005 年,开发Samba的Andrew试图破解BitKeeper的协议,随后开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,Linus仅仅使用了两周的时间用C写出了Git,开发出自己的版本系统,一个月之内,Linux系统的源码已经由Git管理了。 他们对新的系统制订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub。

这时候是不是有很多小伙伴已经被Linus所惊讶到了呢?使用了两周时间用C写出了Git!

1.2 Git到底是什么?

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理

1.3 什么是版本控制系统?

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

1.3.1 版本控制系统的作用

版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。

版本控制系统不仅为我们解决了实际开发中多人协同开发的问题,还提供了一些功能:检入检出控制分支和合并历史记录

  • 检入检出控制:同步控制的实质是版本的检入检出控制。检入就是把软件配置项从用户的工作环境存入到软件配置库的过程,检出就是把软件配置项从软件配置库中取出的过程。检人是检出的逆过程。同步控制可用来确保由不同的人并发执行的修改不会产生混乱。
  • 分支与合并:版本分支(以一个已有分支的特定版本为起点,但是独立发展的版本序列)的人工方法就是从主版本——称为主干上拷贝一份,并做上标记。在实行了版本控制后,版本的分支也是一份拷贝,这时的拷贝过程和标记动作由版本控制系统完成。版本合并(来自不同分支的两个版本合并为其中一个分支的新版本)有两种途径,一是将版本A的内容附加到版本B中;另一种是合并版本A和版本B的内容,形成新的版本C。
  • 历史记录:版本的历史记录有助于对软件配置项进行审核,有助于追踪问题的来源。历史记录包括版本号、版本修改时间、版本修改者、版本修改描述等最基本的内容,还可以有其他一些辅助性内容,比如版本的文件大小和读写属性。 如果我们开发中的新版本发现不适合用户的体验,这时候就可以找到历史记录的响应版本号,回退到历史记录版本!
1.4 版本控制系统的分类(了解)

常见流行的分布式版本控制管理系统有Git

常见流行的集中式版本控制管理系统有CVS、SVN

网络 操作 并发性 示例
第一代 仅一个文件 锁定的 RCS、SCCS
第二代 集中式 多文件 提交之前合并 CVS、SourceSafe、Subversion、Team Foundation Server
第三代 分布式 变更的集合 合并之前提交 Bazaar、Git、Mercurial
1.5 分布式与集中式
1.5.1 集中式

集中式系统是指由一台或多台主计算机组成的中心节点,数据集中存储于这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统的所有功能均由其集中处理。

简单提了集中式的概念,那集中式版本控制也是如此。如图,我们需要合并版本、更新版本时,是将各个版本上传服务器实现集中式合并!

举例来说,集中式版本控制系统在公司中的使用,需要安装一个Server(服务器),然后各个使用版本控制系统的成员安装客户端,然后就是客户端连接服务器了,只有脸上这个服务器才能做版本控制,如果连不上那就不行了。

工作流程: 比较熟悉的SVN是集中式的版本控制系统,每次在进行版本控制之前,需要先从中央服务器(服务端)取出最新的版本,然后开始工作,工作完后推送给中央服务器。此时的中央服务器就好比是一个图书馆,如果你要修改一本书,需要先从图书馆借出来,然后回到自己家修改,改完之后,需要在送回到图书馆。

image-20200623145014939

1.5.2 分布式

分布式系统是一个硬件或软件组件分布在不同的网络计算机上(本地化存储),彼此之间仅仅通过消息传递进行通信和协调的系统。

又一次简单提了分布式的概念,那分布式版本控制更是如此。如图,我们需要合并版本、更新版本时,各台计算机都可以去实现彼此之间合并、更新,不再只依赖于一个中心节点,为我们开发提供了灵活与便捷!

举例来说,分布式版本控制系统在公司中的使用与集中式不同,各个成员需要安装一个Git客户端,而各个成员之间可以随时随地的实现版本控制(比如:两个人合并后,再与第三个人合并或者小组与小组之间合并进行版本控制),不再依赖于必须连接服务器才能实现,那么我们实现了各个小组之间的灵活控制后,最终还是得落到了服务器的手中。我们需要把各个成员、小组之间的版本控制结果,上传到服务器(GitHub)中进行最终合并!

工作流程: 分布式版本控制系统是没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作的时候,不再需要联网。开始工作前,在客户端克隆出完整的代码仓库,然后就可以在家、在公交车等等随心所欲地修改代码并提交了,提交到本地电脑,等到有网的时候就可以一次性地将本地仓库推送到远端仓库(临时中心服务器)中,这样一来,每个人都可以独立进行改动资料,并且所有的改动都是在完整资料信息的环境下进行的。

image-20200623145500696

1.5.3 分布式与集中式的区别

集中式

  • 有一个单一的集中管理的服务器,保存所有文件的修订版本,所有代码库。
  • 对网络的依赖性强,必须联网才能工作,上传速度受网络状况、带宽影响。
  • 客户端记录文件内容的具体差异,每次记录有哪些文件做了更新,以及更新了哪些行的什么内容。

缺点: 中央服务器的单点故障。 如果中央服务器发生宕机,所有客户端将无法提交更新、还原、对比等,也就无法协同工作。如果磁盘发生故障,信息尚无备份,还会有数据丢失的风险。

分布式

  • 本地客户机进行操作,离线工作,快速。
  • 安全性高,每个人电脑里都有完整的版本库,如果电脑发生了更换复制一份就可以。
  • 原子性提交,提交不会被打断(git)。
  • 工作模式非常灵活(传统的集中式工作流 + 特殊工作流 + 特殊工作流和集中式工作流的组合)。

缺点: 缺少权限管理、命令复杂混乱

1.6 Git的下载安装

Git官网下载:https://git-scm.com/

TortoiseGit官网下载:https://tortoisegit.org/

Git文档下载:https://git-scm.com/book/zh/v2

Git详细安装教程参考:Git安装教程详解

注意: 关于Git的可视化工具下载与否取决于自己,笔者不建议下载可视化工具,因为我们要大量使用并熟练使用命令来操作Git!

Git客户端下载 Git可视化工具下载
image-20200705155736341 image-20200705160142347
1.7 安装后测试
1.7.1 打开命令的两种方式
  1. Wins+R输入cmd打开Dos命令窗口
  2. 右键单击打开Git Bash Here窗口
1.7.3 命令查看Git版本号

@查看Git版本号: git version

1588391682513

1.7.2 提交版本控制人信息

安装后打开命令窗口,第一次需要提交我们的信息,这样可以让我们在版本控制的时候知道是谁做的这一次的版本控制。毕竟合并、更新代码等是一件很重要的事,万一缺失损坏了怎么办呢?是吧!

@提交信息版本操作者信息:

git config --global user.name "Ziph" 【用户名】

git config --global user.email "mylifes1110@163.com" 【邮箱】

@查看信息:

git config -l

1588392070384

二、仓库

2.1 仓库是什么?

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

2.2 基本结构

工作区: 由我们使用命令git init初始化的一个本地文件夹,而初始化后的这个文件夹就被称为工作区

暂存区: 由我们使用命令git add .把文件添加到暂存区,而被添加的位置则是工作区中.git目录中的index文件,所以这也叫做索引

版本库: 工作区中会有一个隐藏的.git文件夹,这个不算是工作区,而是Git的版本库,版本库中记录了我们提交过的所有版本,也就是说版本库管理着我们的所有内容

分支: 版本库中包含若干分支,提交后的文件就会存储在分支中,而开始的时候版本库中只会有一个主分支master

基本结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值