💻第2节:初始化与基本工作流(git init、git add、git commit)
💡引言:Git 的起点 —— 初始化你的第一个仓库
在学习 Git 的过程中,初始化仓库 和 提交更改 是最基本也是最重要的操作。每一个 Git 项目都始于一个仓库,而每一次代码变更都需要通过“添加”和“提交”来记录。
本节课曹老师将带你从零开始创建一个 Git 仓库,并完成一次完整的提交流程:从初始化到添加文件,再到提交更改。我们将深入理解 git init、git add 和 git commit 这三个核心命令的作用机制,详细讲解git忽视文件.gitignore的作用,并通过实际案例演示如何使用它们管理代码版本。
⭐一、初始化 Git 仓库:git init
1. 命令说明
git init
该命令用于在当前目录下创建一个新的 Git 仓库。执行后会生成一个隐藏的 .git 文件夹,它包含了所有 Git 的元数据和历史记录。
2. 使用场景
- 将已有项目纳入版本控制
- 创建新项目并准备使用 Git 管理其生命周期
3. 操作示例
mkdir my-project
cd my-project
git init
此时你已经拥有一个空的 Git 仓库,但还没有任何提交记录。
📌 注意:
.git文件夹非常重要,不要手动修改或删除它,否则可能导致仓库损坏。
🚀二、添加文件到暂存区:git add
1. 命令说明
git add <file>
该命令将指定文件的当前状态加入到 暂存区(Staging Area),表示这些更改将在下一次提交中被记录。
2. 多种用法详解
| 命令 | 作用 |
|---|---|
git add . | 添加当前目录及子目录下的所有文件 |
git add README.md | 只添加指定文件 |
git add *.js | 添加所有 .js 文件 |
git add -p | 交互式添加,逐块选择要提交的内容 |
3. 工作原理图解
[工作区] -- git add --> [暂存区]
只有被添加到暂存区的改动才会被提交。
🚌三、提交更改:git commit
1. 命令说明
git commit -m "提交信息"
该命令将暂存区中的内容正式保存为一个版本快照,并附带一条描述性的提交信息。
2. 提交信息规范建议(推荐遵循 Conventional Commits 规范)
格式:
<type>(<scope>): <subject>
// 示例:
feat(auth): add password strength meter
常见 type 类型:
feat:新增功能fix:修复 bugdocs:文档更新style:代码风格调整(不影响逻辑)refactor:重构代码test:增加测试chore:构建/配置/依赖等辅助任务
3. 提交的本质
每次提交都会生成一个唯一的 SHA-1 哈希值作为标识,例如:
commit a1b2c3d4e5f67890abcdef1234567890abcd
Author: John Doe <john@example.com>
Date: Mon Apr 1 12:00:00 2025 +0800
feat(auth): add password strength meter
提交记录是 Git 版本回溯、协作和审计的基础。
🚁四、完整流程演示:从初始化到提交
步骤 1:创建项目目录并初始化
mkdir hello-git
cd hello-git
git init
步骤 2:创建一个文件并写入内容
echo "# Hello Git" > README.md
步骤 3:查看当前状态
git status
输出类似如下内容:
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
步骤 4:添加文件到暂存区
git add README.md
再次运行 git status 查看状态:
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
步骤 5:提交更改
git commit -m "feat(readme): initial commit with README.md"
输出结果:
[master (root-commit) abcdef1] feat(readme): initial commit with README.md
1 file changed, 1 insertion(+)
create mode 100644 README.md
此时你已经成功完成了第一次 Git 提交!
⛵五、常用组合命令与技巧
| 命令 | 描述 |
|---|---|
git add . && git commit -m "message" | 一次性添加所有文件并提交 |
git commit -a -m "message" | 自动添加已跟踪文件的修改并提交(不包括新增文件) |
git commit --amend | 修改最近一次提交的信息或内容(慎用) |
git log | 查看提交历史 |
git diff | 查看工作区与暂存区之间的差异 |
git status | 查看当前仓库状态(推荐频繁使用) |
⚡六、最佳实践与注意事项
✅ 最佳实践
- 每次提交只做一件事(原子性提交)
- 编写清晰、规范的提交信息
- 提交前使用
git status和git diff审核改动 - 避免一次性提交太多内容,难以追溯问题来源
⚠️ 注意事项
- 不要随意使用
git add .,可能误加敏感文件(如.env) - 修改提交时使用
--amend要小心,会影响历史记录 - 在团队协作环境中避免强制推送(force push),以免覆盖他人提交
📕七、 .gitignore 文件讲解
.gitignore 是 Git 版本控制系统中的一个重要配置文件,用于指定哪些文件或目录应该被 Git 忽略,不纳入版本控制。这对于避免将不必要的文件(如编译生成的临时文件、环境配置文件、敏感信息等)提交到代码仓库中非常有用。
1. .gitignore 的作用
- 避免提交无关文件:防止将编译生成的文件、日志文件、临时文件等提交到仓库。
- 保护敏感信息:避免提交包含密码、API 密钥等敏感信息的文件。
- 提高仓库整洁性:减少仓库中的冗余文件,使代码结构更清晰。
2. .gitignore 的语法规则
.gitignore 文件使用简单的模式匹配规则来指定需要忽略的文件或目录。以下是常见的语法规则:
| 规则 | 说明 | 示例 |
|---|---|---|
filename | 忽略指定名称的文件 | error.log |
*.ext | 忽略所有指定扩展名的文件 | *.tmp |
dir/ | 忽略指定目录(包括子目录) | build/ |
!pattern | 取消忽略(例外规则) | !important.txt |
/pattern | 仅忽略根目录下的文件或目录 | /config.local.js |
** | 匹配任意层级目录 | **/temp/ |
3. 示例 .gitignore 文件
以下是一个常见的 .gitignore 文件示例,适用于一个典型的 Web 项目:
# 忽略 Node.js 项目的依赖文件
node_modules/
# 忽略编译生成的临时文件
dist/
build/
*.tmp
# 忽略日志文件
*.log
# 忽略环境配置文件(避免提交敏感信息)
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# 忽略 IDE 或编辑器生成的配置文件
.idea/
.vscode/
*.swp
# 忽略 macOS 系统文件
.DS_Store
# 忽略 Windows 系统文件
Thumbs.db
# 取消忽略根目录下的 README.md(如果其他规则可能覆盖它)
!/README.md
4. .gitignore 的使用注意事项
-
文件位置:
.gitignore文件应放在项目的根目录下。- 也可以为子目录创建单独的
.gitignore文件,仅作用于该目录及其子目录。
-
生效时机:
.gitignore仅对未被 Git 跟踪的文件生效。- 如果文件已被 Git 跟踪(即已提交到仓库),需要先从 Git 中移除(使用
git rm --cached <file>),然后.gitignore才会生效。
-
全局忽略:
- 如果希望某些忽略规则对所有 Git 项目生效,可以配置全局
.gitignore文件:git config --global core.excludesfile ~/.gitignore_global - 然后在
~/.gitignore_global文件中定义全局忽略规则。
- 如果希望某些忽略规则对所有 Git 项目生效,可以配置全局
-
共享与维护:
.gitignore文件应随项目一起提交到仓库,以便所有开发者使用相同的忽略规则。- 随着项目的发展,可能需要更新
.gitignore文件以适应新的需求。
5. 常见项目的 .gitignore 模板
- GitHub 提供了许多常见项目的
.gitignore模板,可以直接使用或参考: - 例如,Node.js 项目的模板可以直接通过以下命令生成:
curl https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore > .gitignore
6. 调试 .gitignore
如果发现某些文件未被忽略,可以使用以下命令检查 Git 的忽略规则:
git check-ignore -v <file>
这会显示哪个 .gitignore 规则导致文件被忽略(或未被忽略)。
.gitignore是 Git 中一个简单但强大的工具,用于管理哪些文件应该被忽略。通过合理配置
.gitignore,可以避免提交无关文件,保护敏感信息,并保持代码仓库的整洁。对于任何使用 Git 的项目,.gitignore
都是必不可少的配置文件。
📚八、总结
本节课我们系统讲解了 Git 的基本工作流,包括:
✅ 如何使用 git init 初始化一个新的 Git 仓库
✅ 使用 git add 将文件添加到暂存区
✅ 通过 git commit 提交更改并记录版本历史
✅ 推荐了良好的提交规范与实用命令组合
✅ 演示了一个完整的提交流程
✅ 详细讲解了git忽视文件.gitignore的作用
通过本次课程的学习,你已经掌握了 Git 的基础操作流程,能够独立创建项目并进行版本管理。
附录:推荐资源
- 📘 Git 官方文档:https://git-scm.com/book/zh/v2
- 🧰 Git 常用命令速查表:https://education.github.com/git-cheat-sheet-education.pdf
- 📊 Git 图形化工具推荐:VSCode 内置 Git 支持、Sourcetree、GitKraken
🎯 下一步建议:尝试在本地创建多个文件,练习部分提交、多次提交、查看提交日志等操作,加深对 Git 工作流的理解。
下一讲我们将进入《第3节:查看状态与历史记录》,学习如何使用 git status、git log 和 git diff 来审查项目的当前状态和历史变更。敬请期待!

被折叠的 条评论
为什么被折叠?



