Git(1)—— 基本理解与使用

什么是Git?

Git是一个版本控制器 ,++用于记录代码文件,能记录每次的修改以及版本迭代的一个管理系统++。它可以控制电脑上所有格式的文档。而对于我们开发人员来说,Git管理的多为项目的源代码文档。

看完上面的介绍,可能还是没有办法理解Git到底有什么作用。不过你可能听过这样一个笑话:有一个公司的员工,他按老板的需求做好了方案并提交,老板并不满意,让员工前前后后修改了好几个版本;当他疲惫地修改完之后交给老板,这时候老板又觉得第一个提交的方案是最好的。

这样的老板看到就觉得火大。不过我们也可以看出,如果员工是在原来的方案上进行的修改,那么他就没有第一版的保存。那么就需要对每个版本都进行保存记录才能应对这样的情况。那么如果有很多个版本呢?如果在几百个版本里面需要找出含有某个功能的版本,又该怎么去找呢?于是Git就用来处理不同版本的文档,能保存各种详细的信息,在我们需要的时候就可以拿出来使用。

创建Git仓库(初始化仓库)

下面以centos系统为例,创建一个git仓库便于使用:

bash 复制代码
mkdir gitcode
cd gitcode

下面我们使用如下命令在当前文件目录下创建一个git本地仓库:

bash 复制代码
git init

git init 命令作用为初始化仓库

此时可以看到创建了一个后缀为.git的隐藏目录:

我们tree一下就能看到隐藏目录下的文件:

【注】我们手动创建的gitcode目录并不是git仓库,而隐藏目录.git才是git仓库。


配置本地仓库

在初始化仓库之后,首先要初始化两个配置项 ------ name 和 email 地址。配置如下:

bash 复制代码
git config user.name "你的名字"
git config user.email "你的邮箱地址"

通过上面的方式就可以对名字和邮箱进行一个基本的配置。要查看是否配置成功,使用下面的命令:

bash 复制代码
git config -l

如果需要修改配置项,则使用下面的命令:

bash 复制代码
git config --unset user.name

表示重置name配置,该操作会删除 掉原有的name配置项。

在实际操作中,还经常会使用到 global 选项:

bash 复制代码
git config --global user.name "你的名字"
git config --global user.email "你的邮箱地址"

使用global之后会对当前机器上的所有git仓库执行该命令。删除同理。


工作区、暂存区、版本区

简单来讲,工作区就是正在写代码的地方;暂存区就是代码草稿箱;而版本库就是最终定稿的存档。

添加文件

bash 复制代码
git add 【文件名】

将对应文件添加到暂存区(即草稿箱中)。此外,还可以使用下面的命令:

bash 复制代码
git add .

该命令会将当前目录下所有新增,修改和删除的文件,一次性全部添加到暂存区。

保存版本

在修改完成之后,使用commit命令可以对暂存区内的文件进行提交:

bash 复制代码
git commit -m "details"

这样就能将文件成功保存到版本库中。

可以使用git log来打印出所有文件的提交记录(包括提交时间,提交人等)

bash 复制代码
git log

修改文件

git追踪管理的是修改内容,而不是文件。我们对暂存区中的文件进行修改,会被git记录,我们可以使用下面的命令来查看git的状态,可以看到文件有没有被修改,新增内容;

bash 复制代码
git status

该命令只能查看到哪个文件被修改,而无法看到被修改的内容。

因此,git还提供了一个命令,用于显示工作区和暂存区的差异:

bash 复制代码
git diff 【文件名】

版本回退

版本回退需要用到 git reset命令:

bash 复制代码
git reset [Head]
# git reset命令有不同的选项
git reset --soft [Head]
git reset --mixed [Head]
git reset --hard [Head]

git reset的本质是回退版本库的内容。可以用于回到当前版本库的版本。

|---------|-----|-----|-----|
| 选项/命令 | 工作区 | 暂存区 | 版本区 |
| --soft | 不回退 | 不回退 | 回退 |
| --mixed | 不回退 | 回退 | 回退 |
| --hard | 回退 | 回退 | 回退 |

如果不带选项,则默认为mixed选项。且在回退之后无法恢复。因此在实际使用中会慎用--hard选项。


删除文件

删除文件有以下方法:

bash 复制代码
rm [文件名]

不过该命令只能删除工作区中的文件。其实删除文件也是对文件的修改,因此想要保存删除操作,我们也需要通过add和commit来上传到暂存区和版本区中,完成这些步骤才是实现了一个git仓库中文件的删除。

此外,git也提供了一个删除文件的命令:

bash 复制代码
git rm [文件名]

该命令会实现在工作区和暂存区中文件的删除,我们只需要手动再commit提交即可实现删除。

相关推荐
深海鱼在掘金2 天前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
noravinsc2 天前
关于Git Flow
git
蜜獾云2 天前
在Git中配置用户名和密码
git
scx_link3 天前
通过git bash在本地创建分支,并推送到远程仓库中
开发语言·git·bash
南大白3 天前
IntelliJ IDEA 运行时的 JVM 本地内存溢出崩溃
git
码农小旋风3 天前
Claude Code 基础用法大全:对话、分析、修改、测试、Git 和工作流
人工智能·git·chatgpt·claude
南大白3 天前
Git 撤回提交完整方案
git
像风一样的男人@3 天前
python --实现代理服务器
git·ui
sbjdhjd3 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
码云数智-大飞3 天前
Go Channel 详解:并发通信的正确姿势
前端·数据库·git