大家好,我是Echa。今天来分享一下Git相关的基础知识。
一、Git 基本概念
1. Git 历史
Git 是最流行的分布式版本控制系统(Distributed Version Control System,简称 DVCS)。它由 Linus Torvalds 创建,当时非常需要一个快速、高效和大规模分布式的源代码管理系统,用于管理 Linux 源代码。
由于 Linus 对几乎所有现有的源代码管理系统抱有强烈的反感,因此他决定编写自己的源代码管理系列。2005 年 4 月,Git 就诞生了。到了 2005 年 7 月,维护工作就交给了 Junio Hamano,自此他就一直在维护这个项目。
虽然最初只用于 Linux 内核,但 Git 项目迅速传播,并很快被用于管理许多其他 Linux 项目。现在,几乎所有的软件开发,尤其是在开源世界中,都是通过 Git 进行的。
2. 版本控制系统
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。版本控制技术是团队协作开发的桥梁,助力于多人协作同步进行大型项目开发。软件版本控制系统的核心任务就是查阅项目历史操作记录、实现协同开发。
常见版本控制主要有两种:集中式版本控制和分布式版本控制。
(1)集中式版本控制系统
集中式版本控制系统,版本库是集中存放在中央服务器的。工作时,每个人都要先从中央服务器获取最新的版本。完成之后,再把自己添加/修改的内容提交到中央服务器。所有文件和历史数据都存储在中央服务器上。SVN 是最流行的集中式版本控制系统之一。
集中式版本控制系统的缺点就是必须联 才能使用,如果使用局域 还好,速度会比较快。而如果是使用互联 , 速慢的话,就可能需要等待很长时间。除此之外,如果中央服务器出现故障,那么版本控制将不可用。如果中心数据库损坏,若数据未备份,数据就会丢失。
(2)分布式版本控制系统
分布式版本控制系统,每台终端都可以保存版本库,版本库可以不同,可以对每个版本库进行修改,修改完成后可以集中进行更新。虽然它没有中心服务器,但可以有一个备份服务器,它的功能有点类似于 SVN 的中央服务器,但它的作用仅是方便交换修改,而不像 SVN 那样还要负责源代码的管理。Git 是最流行的分布式版本控制系统之一。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑损坏不会影响到协作的其他人。
(3)SVN vs Git
Git 相较于 SVN:
3. Git 安装
在Git官 下载、安装即可:https://git-scm.com/download
安装完成之后,可以使用以下命令来查看 Git 是否安装成功:
如果安装成功,终端会打印安装的 Git 的版本:
4. Git 初始化
要给项目初始化一个Git仓库,可以在终端中打开项目目录,执行以下命令即可:
初始化之后,就会创建一个名为.git的新子文件夹,其中包含 Git 将用于跟踪项目更改的多个文件和更多子目录:
在使用 Git 进行代码管理时,不希望一些文件出现在跟踪列表中,比如node_modules文件。这种情况下,可以在项目的根目录中创建一个名为.gitignore的文件,在该文件中列出要忽略的文件和文件夹,来看一个示例:
注意:以 # 符 开头的行是注释。
我们可以在本地克隆Git存储库上的代码,首先要找到Git存储库上的HTTPS或SSH的地址,如下:
然后使用以下命令将远程仓库克隆到本地:
5. Git 结构和状态
从Git的角度来看,可以在三个区域进行文件更改:工作区,暂存区和存储库。
Git 工作目录下的文件存在两种状态:
其中已跟踪状态可以细分为以下三种状态:
可以通过运行以下命令来检查当前分支的状态:
显示结果如下:
此命令不会更改或更新任何内容。它会打印出哪些文件被修改、暂存或未跟踪。未跟踪的文件是尚未添加到 git 索引的文件,而自上次提交以来已更改的文件将被视为已被 git 修改。
二、Git 入门
1. 全局配置
当安装Git后首先要做的就是配置所有本地存储库中使用的用户信息。每次Git提交都会使用该用户信息。
config 命令适用于不同的级别:
下面的配置均为写入系统级别:
(1)设置用户名
可以使用以下命令设置使用 Git 时的用户名:
可以使用以下命令查看设置的user.name:
(2)设置邮箱
可以使用以下命令设置使用 Git 时的邮箱:
可以使用以下命令查看设置的 email:
(3)设置命令颜色
除了上述两个基本的设置之外,还可以设置命令的颜色,以使输出具有更高的可读性:
(4)查看所有配置
通过上面的命令设置的信息会保存在本地的.gitconfig文件中。可以使用以下命令查看所有配置信息:
如果在全局输入这个命令,就会显示全局的配置:
如果在使用 Git 的项目中输入该命令,除了会显示全局的配置之外,还会显式本地仓库的一些配置信息,如下:
(5)设置别名
git config 命令为我们提供了一种创建别名的方法,这种别名通常用于缩短现有的命令或者创建自定义命令。来看一个例子:
这里为commit -m创建一个别名 cm,这样在提交暂存区文件时,只需要输入以下命令即可:
2. 分支操作
分支是源代码控制的核心概念,它允许将工作分离到不同的分支中,这样就可以自由地处理源代码,而不会影响其他任何人的工作或主分支中的代码。下面来看一些常见的分支操作。
(1)查看分支
可以使用以下命令来查看当然所在的分支以及该项目所有的分支情况:
该命令可以列出项目所有的本地分支,显示绿色的分支就是当前分支:
可以使用以下命令来列出所有的远程分支:
可以使用以下命令来查看所有的本地分支和远程分支:
(2)创建分支
我们在计算机上只能访问本地分支,在将分支推送到远程仓库之前,需要先创建一个本地分支。
可以使用以下命令来创建分支:
加上-b就可以在创建新的分支之后,直接切换到新创建的分支上:
如果想将新建的本地分支推送到远程仓库,以在远程仓库添加这个分支。可以执行以下命令:
(3)删除分支
可以使用以下命令来删除本地分支:
需要注意,在删除分支之前,要先切换到其他分支,否则就会 错:
切换到其他分支再删除即可:
有时 Git 会拒绝删除本地分支,因为要删的分支可能有未提交的代码。这是为了保护代码以避免意外丢失数据。可以使用以下命令来强制删除本地分支:
这样就删除成功了:
当然,我们也可以删除远程仓库分支,执行以下命令即可:
(4)合并分支
可以使用以下命令将其他分支的代码合并到当前分支:
如果想将A分支合并到B分支,就要先切换到B分支,然后执行命令:git merge A。
(5)重命名分支
可以使用以下命令来将分支重命名:
如果newname名字分支已经存在,则需要使用-M来强制重命名:
3. 基础操作
Git 数据工作流程如下:
(1)暂存文件
可以使用以下命令来暂存已修改的文件,命令最后需要指定要暂存的文件名称:
如果想要将所有未跟踪和修改的文件添加到暂存区,可以执行以下命令:
此时分支的状态如下:
(2)提交暂存
可以使用以下命令将暂存区的文件修改提交到本地仓库,
其中-m参数表示message日志信息,参数后面要加一个日志信息,用双引 括起来。
此时分支的状态如下:
如果上次提交暂存的messge写错了怎么办呢?可以使用使用以下命令来更新提交,而不需要撤销并重新提交:
如果有一个新的文件修改,也想提交到上一个commit中,可以使用以下命令来保持相同的提交信息:
(3)存储更改
假如我们正在开发迭代功能,但是还没开发完。这时有一个紧急的bug需要修复上线。可能就需要切换到一个hotfix分支去修复bug。这时对于开发了一部分的功能创建提交是没有逻辑意义的。可以使用以下任一命令来存储修改的内容:
该命令回保存所有未提交的更改并恢复到上次提交时存储库的状态。
当想再次继续开发此功能时,就可以使用以下命令检查所有存储:
这时终端中就会显示带有时间戳的所有已经暂存的列表。可以使用以下任一命令来取回所有的更改:
apply 和 pop 之间的区别在于,pop 应用了 stash 中的更改并将其也从 stash 中删除,但 apply 即使在应用后仍将更改保留在 stash 中。
可以使用以下任一命令应用存储列表中的第 N 个存储:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!