Git | Git 版本控制 —— 创建本地版本库 & 添加文件

🌟想了解这个工具的其它相关笔记?看看这个:[网安工具] 版本控制系统 —— Git · 使用手册

0x01:Git 概念解析 —— 版本仓库

Git 的版本仓库是存储项目代码及其历史变更的核心区域,它分为本地仓库和远程仓库两种:

0x0101:本地仓库

本地仓库位于开发者的计算机上,是通过克隆远程仓库或初始化新项目创建的。它里面包含了项目的所有文件、目录以及特定版本的历史记录,这些记录以一系列快照的形式存储,每个快照都对应了一次提交操作,记录代码在特定时间点的状态。

本地仓库为开发者提供了一个独立的开发环境,开发者可以在其中自由地进行代码修改、添加新功能或修复遗留问题,而不会影响到其他开发者的开发工作。

0x0102:远程仓库

远程仓库通常托管在服务器上,如 GitHub、GitLab 或 Bitbucket 等代码托管平台。它是团队协作开发的中心枢纽,用于存储项目的最新版本和完整历史记录。开发者可以通过网络将本地仓库的更改推送到远程仓库,也可以从远程仓库拉取其他开发者的更改到本地仓库。这种机制使得团队成员之间能够方便地共享代码、协同工作,并保持项目版本的一致性。

远程仓库还提供了额外的功能,如代码托管、代码审查、问题跟踪等,进一步促进了团队的开发效率和代码质量的提升。


“版本仓库” 在本地的表现其实就是一个文件夹,只不过这个文件夹被 Git 管理起来了,在该文件夹中对每个文件的修改、删除,Git 都能进行跟踪,这可以方便我们未来在某一时刻进行回溯操作。

0x02:Git 版本仓库 —— 初始化版本仓库

接下来我们以 Linux 为例,演示一下如何创建一个版本仓库(Windows 图形化就更简单了,流程类似)。创建版本仓库主要分为两步:

  1. 新建一个文件夹 => 这个文件夹就是我们后续存放项目的地方。

  2. 将该文件夹声明为 Git 版本仓库 => 让文件夹中的内容被 Git 管理起来。

0x0201:新建文件夹

前面我们介绍了,Git 仓库的表现形式就是一个文件夹,所以嘞,我们先建一个空的文件夹,Linux 中创建空文件夹的命令如下(Windows 就是右击新建咯):

mkdir gitTest # 创建 gitTest 文件夹
cd gitTest    # 进入 gitTest 文件夹
pwd           # 打印当前工作目录

注意:如果你使用 Windows 系统,为了避免后期遇到各种奇奇怪怪的错误,请确保目录名(包括父目录)不包含中文。

0x0202:将文件夹变成 Git 仓库

创建了文件夹还不行,我们还得把这个文件夹通过下面的命令变成 Git 可以管理的仓库才行:

git init # 初始化一个新的 Git 仓库在当前目录

如上,运行完命令,它就显示我们初始化了一个空的 Git 仓库在 XXX 目录下。如果我们此时查看当前的文件夹,会发现该文件夹下多了个 .git 文件夹,该文件夹就是 Git 用来跟踪管理版本库的。没事的时候千万别动该目录,不然改乱了,就把 Git 仓库给破坏了。

其实,我们初始化 Git 仓库的时候也不一定非得在一个空文件夹中初始化,其实选择一个有东西的文件夹也是可以的,不过嘞,我们现在还在学习,就别拿有数据的文件夹乱搞了。

0x03:Git 文件管理 —— 将文件添加到版本库中

0x0301:Git 文件管理 — 注意事项

1. Git 无法跟踪二进制文件的改动

这里首先声明一下,所有的版本控制系统,只能跟踪文本文件的改动,比如 TXT 文件、网页、所有的程序代码等等,Git 也不例外。版本控制系统可以告诉你每次发生的改动,比如在第 1 行新增了一个单词 “Hello World”,在第 3 行删除了一个单词 “READ”。

而像图片、视频这些二进制文件,虽然也能由版本控制系统管理,但是没办法跟踪文件的变化(二进制文件,改变的是底层的二进制位,你就是能发现变了,你也不知道意义是啥)。

不幸的是,Microsoft 的 Word 格式就是二进制的,因此,版本控制系统是没办法跟踪 Word 文件的改动的,这也是为啥,GitHub 上的文章多以 Markdown 格式书写(Markdown 的本质就是 TXT 文件 + 特殊意义的标识符)。

2. 文本编码问题

因为文本是有编码的,比如中文常用的有 GBK 编码,日文有 Shift_JIS 编码,如果没有历史遗留问题,强烈建议使用标准的 UTF-8 编码,这样会减少冲突。

UTF-8 是针对 Unicode 的一种可变长度字符编码,而 Unicode 又是万国码(所有国家以及特殊字符它都支持),所以十分推荐使用 UTF-8 编码编写文本内容。

3. Windows 记事本遗留问题

不推荐使用 Windows 自带的 记事本 来编辑文本文件。这是因为记事本在保存 UTF-8 编码的文件时,会自动在文件开头添加 0xefbbbf 字符(即 UTF-8 的字节顺序标记,BOM)。这种行为可能会引发一些问题,例如网页第一行出现多余的 “?” 字符,或者正确编写的程序在编译时因无法正确识别文件编码而报错。

相比之下,Notepad++Visual Studio Code 是两款非常优秀的替代工具。它们不仅功能强大,支持多种编程语言和文件格式,还具备代码高亮、语法检查、智能提示等实用功能,能够有效提升开发效率。更重要的是,这两款工具都是免费的,完全能够满足日常的文本编辑和代码开发需求。

0x0302:Git 文件管理 — 添加文件至版本仓库

言归正传,我们先在被 Git 管理的文件夹中创建一个 GitStudyLog.txt 文件,内容如下:

[2025/04/25]    学习内容: Git 备注: 今天是个学习 Git 的好日子
                git init # 初始化一个新的 Git 仓库在当前目录

虽然上面的文件我们是在被 Git 管理的文件夹中创建的,但其实,Git 还没有记录下这次的变化。是不是有点懵?输入下面这个命令,查看一下当前 Git 仓库的状态:

git status  # 检查当前 Git 仓库的状态

如上,git status 的回显提示我们,“暂时没有任何提交的内容,但存在未被跟踪的文件”。这个 “未被跟踪” 的文件,其实就是 GitStudyLog.txt(至于 “未提交” 我们后面讲)。

我们可以通过下面的命令,将 GitStudyLog.txt 添加到 Git 仓库中(其实是 Git 的暂存区,这个后面会讲),让 Git 跟踪该文件的变化:

git add <文件名>  # 将文件提交到 Git 仓库,让 Git 跟踪文件变化
### 示例: git add GitStudyLog.txt 

如上,通过 git add 我们成功把 GitStudyLog.txt 添加进了 Git 仓库的管理列表,但是你注意到了 “Changes to be committed” 这个东东了嘛,它的意思是 “要提交的更改”。

也就是说,通过 git add 我们仅仅是让 Git 能追踪该文件的变化了,但具体这次改变了啥,我们还未进行提交。那我们该如何让 Git 记录此次更改呢?通过下面这个命令:

git commit -m "2025/04/25 - GitStudy - 今天学习了创建版本库"
​
# -m 后跟的是本次提交修改的备注,方便我们以后进行版本回溯的时候查看

如上,Git 执行完成后告诉我们 1 file changed:一个文件被改动(我们刚刚新增了一个 GitStudyLog.txt);2 insertions(+):插入了两行内容(GitStudyLog.txt 中有两行内容)。

此时,我们再此查看 Git 仓库的状态:

如上,它提示,我们当前在主分支,已经没有啥好提交的了,工作环境是干净的(说白了就是相较于上次修改后,我们目前没有对当前文件夹中的任何内容进行修改)。

0x04:Git 文件管理 —— 本章小结 & 问题解决

本章中我们一共学习了三个知识点:

  1. 如何初始化本地 Git 仓库。

  2. 如何查看当前 Git 仓库的状态。(这部分算是提前讲,后面也会涉及到)

  3. 如何让 Git 仓库跟踪文件变化,并将具体变化提交到 Git 仓库中进行记录。

相关命令以及速记如下:

### 初始化一个 Git 仓库
git init
​
### 查看当前 Git 仓库状态
git status
​
### 将文件添加到 Git 仓库
git add <file> # 让 Git 追踪指定文件变化,该命令可以使用多次,添加多个文件
git commit -m <message> # 将修改提交到 Git 仓库中,同时对本次修改进行备注操作

可能小伙伴会有一个疑问,为什么 Git 添加文件需要 addcommit 两步呢?好麻烦啊。这其实是因为 commit 可以一次提交多个修改,所以我们可以分多次 add 不同的文件,最后再一次提交,比如:

git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue17 :: Hack3rX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值