创建你的第一个 Git 仓库

学习如何初始化 Git 仓库,理解 .git 目录的作用,开始你的版本控制之旅

⏱️ 12 分钟📊 入门📅 2024/1/4
仓库初始化基础

简介

现在你已经安装并配置好了 Git,是时候创建你的第一个 Git 仓库了!

仓库(Repository) 是 Git 存储项目所有文件和历史记录的地方。就像一个智能的文件夹,它不仅包含你的文件,还记录了所有的修改历史。

创建仓库的两种方式

方式 1: 初始化新仓库(git init)

从零开始创建一个新项目。

方式 2: 克隆现有仓库(git clone)

复制一个已存在的项目(通常来自 GitHub)。

今天我们先学习第一种方式,克隆仓库会在后续课程中讲解。

实战:创建你的第一个仓库

步骤 1: 创建项目目录

首先,创建一个用于你项目的文件夹:

# 创建项目目录
mkdir my-first-project

# 进入目录
cd my-first-project

💡 提示: mkdir 是 "make directory" 的缩写,用于创建文件夹

步骤 2: 初始化 Git 仓库

在项目目录中运行:

git init

你会看到:

Initialized empty Git repository in /path/to/my-first-project/.git/

恭喜!你刚刚创建了一个 Git 仓库!🎉

步骤 3: 验证仓库创建

查看当前目录:

ls -la

输出:

total 0
drwxr-xr-x  3 user  staff   96 Jan  1 12:00 .
drwxr-xr-x 20 user  staff  640 Jan  1 12:00 ..
drwxr-xr-x  9 user  staff  288 Jan  1 12:00 .git

注意到 .git 目录了吗?这就是 Git 的"魔法"所在!

理解 .git 目录

.git 目录是 Git 仓库的核心,包含了所有版本历史和配置信息。

.git 目录结构

.git/
├── HEAD              # 指向当前分支
├── config            # 仓库配置
├── description       # 仓库描述
├── hooks/            # Git 钩子脚本
├── info/             # 额外信息
├── objects/          # 所有数据对象
├── refs/             # 分支和标签引用
└── ...

⚠️ 重要: 不要手动修改 .git 目录中的文件,让 Git 来管理它!

查看 HEAD 文件

cat .git/HEAD

输出:

ref: refs/heads/main

这表示当前在 main 分支上。

添加第一个文件

让我们给空仓库添加一些内容:

1. 创建 README 文件

echo "# My First Project" > README.md

或者手动创建文件:

# 使用编辑器创建 README.md
code README.md

添加内容:

# My First Project

这是我的第一个 Git 项目!

## 功能

- 学习 Git 基础
- 练习版本控制

2. 查看仓库状态

git status

输出:

On branch main

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)

解读:

  • On branch main: 当前在 main 分支
  • No commits yet: 还没有任何提交
  • Untracked files: README.md 是新文件,Git 还没追踪它

3. 添加文件到暂存区

git add README.md

再次查看状态:

git status

输出:

On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   README.md

文件现在在暂存区,准备提交了!

4. 创建第一个提交

git commit -m "初始提交:添加 README 文件"

输出:

[main (root-commit) a1b2c3d] 初始提交:添加 README 文件
 1 file changed, 8 insertions(+)
 create mode 100644 README.md

🎉 恭喜!你创建了第一个 Git 提交!

5. 查看提交历史

git log

输出:

commit a1b2c3d4e5f6g7h8i9j0 (HEAD -> main)
Author: Your Name <your@email.com>
Date:   Mon Jan 1 12:00:00 2024 +0800

    初始提交:添加 README 文件

完整的工作流程

让我们再练习一遍完整流程:

1. 创建新文件

echo "print('Hello, Git!')" > hello.py

2. 查看状态

git status

3. 添加到暂存区

git add hello.py

4. 提交

git commit -m "添加 Python 脚本"

5. 查看历史

git log --oneline

输出:

b2c3d4e 添加 Python 脚本
a1b2c3d 初始提交:添加 README 文件

git init 的高级用法

指定分支名

git init -b main

或者:

git init --initial-branch=main

在现有目录初始化

如果你已有项目文件:

cd existing-project
git init
git add .
git commit -m "初始提交"

创建裸仓库

用于中心服务器(没有工作目录):

git init --bare my-repo.git

这通常用于远程服务器,我们在后续课程中会详细讲解。

仓库状态图

理解文件在 Git 中的不同状态:

工作目录              暂存区              本地仓库
(Working)           (Staging)          (Repository)
   │                    │                    │
   │  git add           │   git commit       │
   │─────────────────>  │─────────────────>  │
   │                    │                    │
   │  修改文件           │  准备提交           │  已提交

实战练习

练习 1: 创建个人简历项目

# 1. 创建项目
mkdir my-resume
cd my-resume

# 2. 初始化仓库
git init

# 3. 创建简历文件
cat > resume.txt << EOF
姓名:张三
职业:软件工程师
技能:Python, JavaScript, Git
EOF

# 4. 提交
git add resume.txt
git commit -m "创建个人简历"

# 5. 添加更多信息
echo "邮箱:zhangsan@example.com" >> resume.txt
git add resume.txt
git commit -m "添加联系方式"

# 6. 查看历史
git log --oneline

练习 2: 创建网站项目

mkdir my-website
cd my-website
git init

# 创建 HTML 文件
echo "<!DOCTYPE html><html><body><h1>My Website</h1></body></html>" > index.html

# 创建 CSS 文件
echo "body { background: #f0f0f0; }" > style.css

# 一次性添加所有文件
git add .

# 提交
git commit -m "创建网站基础文件"

# 查看状态
git status

常见错误与解决

错误 1: "fatal: not a git repository"

原因: 当前目录不是 Git 仓库

解决:

git init

错误 2: 在错误的目录初始化了仓库

解决: 删除 .git 目录

rm -rf .git

⚠️ 警告: 这会删除所有 Git 历史!

错误 3: 忘记提交就修改文件

这不是错误! Git 会追踪所有修改。只需:

git status  # 查看修改
git add .   # 添加修改
git commit -m "..."  # 提交

最佳实践

1. 项目开始就初始化

项目一开始就使用 Git,不要等到"代码写得差不多了"。

2. 合理组织项目结构

my-project/
├── .git/           # Git 目录
├── .gitignore      # 忽略文件列表
├── README.md       # 项目说明
├── src/            # 源代码
├── tests/          # 测试文件
└── docs/           # 文档

3. 立即创建 .gitignore

# 创建 .gitignore
cat > .gitignore << EOF
# 操作系统文件
.DS_Store
Thumbs.db

# 编辑器配置
.vscode/
.idea/

# 依赖
node_modules/
__pycache__/

# 构建产物
dist/
build/
EOF

git add .gitignore
git commit -m "添加 .gitignore 文件"

4. 写有意义的初始提交

❌ 不好:

git commit -m "first commit"

✅ 好:

git commit -m "初始化项目:添加基础文件和文档"

检查清单

在开始新项目时,确保完成这些步骤:

  • 创建项目目录
  • git init 初始化仓库
  • 创建 README.md
  • 创建 .gitignore
  • 设置合适的项目结构
  • 创建初始提交
  • 验证 git log 有记录

小结

今天我们学习了:

  • ✅ 使用 git init 创建新仓库
  • ✅ 理解 .git 目录的作用
  • ✅ 添加文件并创建第一个提交
  • ✅ 查看仓库状态和历史
  • ✅ 项目初始化的最佳实践

你现在知道如何从零开始创建一个 Git 项目了!

下一步

继续学习,你会越来越熟练!💪

这篇教程有帮助吗?