主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

Git 创建版本库

什么是版本库呢?版本库又名仓库(Repository),你可以简单理解为一个受 Git 版本控制的特殊目录,每个文件的变更(包括新增、修改、删除)都会被 Git 精准跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

创建版本库非常简单,首先,选择一个合适的路径(如项目目录),创建一个空文件夹:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/kaicz/learngit

pwd 命令用于显示当前目录。在我的 Mac 上,这个仓库位于/Users/kaicz/learngit

注意

如果你使用 Windows 系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

第二步,通过git init命令把这个目录变成 Git 可以管理的仓库:

$ git init
Initialized empty Git repository in /Users/kaicz/learngit/.git/

这时一个空的 Git 仓库(empty Git repository)就建好了。细心的用户会发现当前目录下自动生成了一个名为.git的目录,这个目录是 Git 用来管理版本库的核心所在。包含了版本控制的所有关键数据,任何不当的手动修改都可能导致仓库损坏,因此强烈建议不要直接编辑其中的任何文件。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见了。

Git 同样支持在现有项目目录中初始化仓库,这样就可以直接为已有代码创建版本控制。不过需要特别注意的是:在学习 Git 操作时,建议避免直接在公司实际开发项目上进行练习,以防意外修改重要代码或提交记录。


把文件添加到版本库

需要明确的是,所有版本控制系统(包括 Git)的核心功能都是跟踪文本文件的变化。无论是纯文本文件(如 .txt)、网页代码(HTML/CSS/JavaScript),还是各种编程语言的源代码,版本系统都能精确记录每一行的修改细节——例如"在第5行添加了'Linux'单词"或"在第 8 行删除了'Windows'"。

对于图片、视频、压缩包等二进制文件,虽然版本控制系统也能进行管理,但存在本质区别。系统只能记录文件整体大小的变化(比如从100KB变为120KB),无法像文本文件那样记录具体的修改内容。这是因为二进制文件没有"行"的概念,其内容变化对版本控制系统来说是不透明的。因此,Git 会将整个二进制文件视为一个不可分割的单元进行版本管理。

需要特别提醒 Windows 用户:请避免使用系统自带的记事本程序编辑代码或文本文件。这是由于 Microsoft 在记事本的UTF-8编码实现上存在一个设计缺陷——它会自动在文件开头插入BOM头(0xefbbbf十六进制字符)。

强烈推荐使用专业的代码编辑器如Visual Studio Code(完全免费)来替代记事本。VS Code 不仅完美支持各种编码格式,还提供了语法高亮、智能提示等强大的开发功能,是编程工作的理想选择。

Git

言归正传,现在我们编写一个readme.txt文件,内容如下:

Git is a version control system.
Git is free software.

将文件放在learngit目录下(子目录也行),因为这是一个 Git 仓库,有效作用范围就是learngit目录及其所有子目录。

和把大象放到冰箱需要 3 步相比,把一个文件放到 Git 仓库只需要两步。

第一步,用命令git add告诉 Git,把文件添加到仓库:

$ git add readme.txt

执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

第二步,用命令git commit告诉 Git,把文件提交到仓库:

$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。

git commit命令执行成功后会告诉你:

  • 1 file changed:1个文件被改动(我们新添加的readme.txt文件)。
  • 2 insertions:插入了两行内容(readme.txt有两行内容)。

git commit命令的注释引号使用要求:

  • 在 Linux 系统中,commit信息可以使用单引号(')和双引号(")。
  • 在 Windows 系统中,commit信息只能使用双引号(")。

为什么 Git 添加文件需要addcommit 一共两步呢?因为commit可以一次提交很多文件,你可以多次add不同的文件,比如:

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


评论区 0
发表评论
教程介绍
Git 是一个分布式版本控制系统,用于高效管理文件的修改历史,支持多人协作开发。
6 章节
13 阅读
0 评论