Git
8/9/25About 4 min
基础
版本控制
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
有了版本控制你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。
Git
Git 是一个分布式版本控制系统,主要用于源代码的版本管理和团队协作开发。它最初由 Linus Torvalds 开发,目的是更好地管理 Linux 内核源码。与传统的集中式版本控制系统(如 SVN)不同,Git 的每一个开发者本地仓库都是完整的,包含代码、历史记录和分支,因此即使不联网,也能进行大多数操作。
Git 最核心的优势体现在几个方面:
- 分布式架构:每个人都有一个完整的仓库,离线也能查看历史、提交代码,这让协作更加灵活,数据也更安全。
- 高效的分支管理:Git 的分支创建、切换、合并代价极低,支持常见的开发流程,比如 Git Flow、GitHub Flow 等,非常适合多人并行开发。
- 快照机制而非增量存储:每次提交是一次项目的快照(指针引用 + 差异数据),这比传统差异比较更快、更安全,且支持回退、对比、还原等操作。
- 哈希标识:每次提交使用 SHA-1 哈希值标识,不可篡改、唯一安全,保证版本一致性。
- 强大的合并与冲突解决能力:支持三方合并、变基(rebase)、Cherry-pick 等高级操作,灵活应对复杂协作场景。
三种状态
Git 有三种状态,你的文件可能处于其中之一:
- 已提交(committed):数据已经安全的保存在本地数据库中。
- 已修改(modified):已修改表示修改了文件,但还没保存到数据库中。
- 已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
工作流程
- 在工作目录中修改文件。
- 暂存文件,将文件的快照放入暂存区域。
- 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录
常用指令
获取仓库
有两种取得 Git 项目仓库的方法。
- 在现有目录中初始化仓库: 进入项目目录运行
git init
命令,该命令将创建一个名为.git
的子目录。 - 从一个服务器克隆一个现有的 Git 仓库:
git clone [url]
自定义本地仓库的名字:git clone [url] directoryname
更新记录
- 检测当前文件状态 :
git status
- 提出更改(把它们添加到暂存区):
git add filename
(针对特定文件)、git add *
(所有文件)、git add *.txt
(支持通配符,所有 .txt 文件) - 忽略文件:
.gitignore
文件 - 提交更新:
git commit -m "代码提交信息"
(每次准备提交前,先用git status
看下,是不是都已暂存起来了, 然后再运行提交命令git commit
) - 跳过使用暂存区域更新的方式 :
git commit -a -m "代码提交信息"
。git commit
加上-a
选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add
步骤。 - 移除文件:
git rm filename
(从暂存区域移除,然后提交。) - 对文件重命名:
git mv README.md README
(这个命令相当于mv README.md README
、git rm README.md
、git add README
这三条命令的集合)
其他
GIt信息格式
<类型>: <简要描述>
<可选正文,说明改动原因、背景等>
类型:
feat
:新增功能
fix
:修复 bug
refactor
:重构代码(非功能变更)
docs
:文档变更
style
:格式修改(如空格、缩进)
test
:添加或修改测试
chore
:构建流程、工具变更等