有一款名为“西游记”的游戏,里面一共有九九八十一道关卡,你今天打到第五关,然后关机休息了。明天打开游戏进去,发现又从第一关重新开始了,妈呀!忘记存档了……
在真假美猴王那关,不小心把唐僧打死了,事后发现在没有唐僧的情况下,无论如何都取不到真经。这时,你只需要重新读取真假美猴王前面最近的存档,就能实现时光倒流……
你现在已经通关了“西游记”,但是在西游的路上充满了遗憾,如果当初选择留在女儿国继续发展会怎么样?这时,你只需要读取女儿国前面最近的存档,就可以轻松开启一段支线旅程……
在同一条故事发展时间线上的两个存档之间是存在因果的,今天的故事是因,明天的故事是果,明天的果是基于今天的因上的。在现实世界中,历史已无法改变,我们只能珍惜当下并展望未来……
是的,Git 中最重要的概念就是“存档”,只要你知道什么是存档,就能轻松拿下 Git!
开始前的准备
在教程开始之前,有几个需要提前说明的事项:
- Git 并非 GitHub!Git 是一个安装于本地的版本管理软件,可单击操作;而 GitHub 是诸多 Git 仓库托管网站之一,千万不要想当然的认为 Git 是 GitHub 的缩写
- 如果电脑上没有安装 Git,可以在 Git 官网安装:https://git-scm.com/downloads
- 本教程使用命令行进行操作,macOS 使用“终端”,Windows 则使用“git-bash”
- 下文中称要使用 Git 管理其内容的文件夹为“项目根目录”
- 抛开命令行恐惧,命令行其实并没你想的那么难
仓库初始化
我们先进入项目根目录,后续其他 Git 命令也都是在项目根目录下执行:
1
2
3
# 这里的 /path/to/directory 是虚拟的,实操时需替换成自己电脑上的位置
# cd 是最简单,最常用的命令,如果不会用 cd 命令,后面的内容已经没必要看了
cd /path/to/directory
初始化仓库的操作很简单,只有一个命令,且对于一个项目来说,初始化仓库的操作只需要执行一次:
1
git init
仓库初始化后,在当前文件夹下会生成一个名为.git的子文件夹,你也可以通过是否有.git子文件夹来判断当前目录是否初始化为 Git 仓库。
除.git文件夹外的其他文件被称为“工作区”中的文件。
创建存档
仓库有了,接下来就是对工作区中的文件进行编辑了。每完成一个阶段的编辑后,你就可能想对当前的文件内容进行存档了。
存档:添加文件
存档的第一个步骤就是选择要保存状态的文件:
1
git add filename
git add命令很简单,后面直接跟上要保存状态的文件的文件名即可(如果要保存的文件在子文件夹中,前面再加上子文件夹的名字)。还有个更简单的方法,就是执行git add .,这个.就代表当前文件夹中所有内容(包括子文件夹中的内容)。
存档:创建存档
添加文件后,执行git commit命令创建存档,这个命令也很简单,每次存档时,Git 会让你为本次存档输入一个“备注”:
1
git commit -m "三大白骨精"
这样一个存档就创建好了,在 Git 的世界中,存档就是commit。
查看存档
我们可以通过git log命令查看存档列表,每个存档都有作者、日期、备注、哈希值等属性,如:
1
2
3
4
5
commit 9ed29eb22696ed0c1eecbcf7ec00dd25541156f6 (<--哈希值)
Author: scfhao <scfhao@126.com> (<--作者)
Date: Tue Jan 14 15:38:35 2025 +0800 (<--日期)
delete tmp files (<--备注)
分支
连接存档的时间线就是分支,也就是游戏中的支线。
创建分支
你可以基于任何一个存档创建新的分支:
1
git checkout 9ed29eb -b branchname
这个命令中的 branchname 可以替换成你想要的分支名称,9ed29eb是基于的存档的哈希值,这个哈希值没必要写全,只要写开头几位,Git 能根据这几位确定是哪个存档即可。
切换分支
也可以用git checkout命令切換到其他支线:
1
git checkout branchname
Git 的分支其实是存档的别名,分支名称代表分支对应的时间线上最新的那次存档。这也是为什么checkout后面既可以跟存档哈希值,也可以跟分支名称的原因。
Next
看到这里,你已经对 Git 有了一个基本的了解,快去实践一下吧!如果你在使用 Git 的过程中遇到什么问题,那么恭喜你又要学到新东西了!
Git 用处很多,我个人除了用 Git 保存代码外,还用 Git 保存笔记,如果你是大四的学生,那年后正好可以使用 Git 保存需要修改很多次的毕业论文……
