Skip to content

🏗️ 第三章:创建仓库 —— 从零开始

两种创建仓库的方式

创建 Git 仓库有两种方式,就像盖房子有两种方式——自己从头盖,或者买一套现成的(然后拆拆改改)。

方式一:git init—— 白手起家

bash
# 创建项目目录
mkdir 我的第一个网站
cd 我的第一个网站

# 初始化 Git 仓库
git init
Initialized empty Git repository in /home/xiaoming/我的第一个网站/.git/

# 看看发生了什么
ls -la
total 12
drwxr-xr-x  3 xiaoming xiaoming 4096 Jun 20 10:00 .
drwxr-xr-x 15 xiaoming xiaoming 4096 Jun 20 10:00 ..
drwxr-xr-x  7 xiaoming xiaoming 4096 Jun 20 10:00 .git

就这么简单!git init 会在当前目录下创建一个隐藏的 .git 文件夹。这个文件夹就是 Git 的"大脑",所有的版本信息都在里面。

方式二:git clone—— 站在巨人的肩膀上

bash
# 用 SSH 方式克隆
git clone git@github.com:xiaoming/我的第一个网站.git
Cloning into '我的第一个网站'...
remote: Enumerating objects: 42, done.
remote: Counting objects: 100% (42/42), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 42 (delta 12), reused 42 (delta 12)
Receiving objects: 100% (42/42), 8.50 KiB | 8.50 MiB/s, done.
Resolving deltas: 100% (12/12), done.

# 用 HTTPS 方克隆(推荐新手用这个)
git clone https://github.com/xiaoming/我的第一个网站.git

# 克隆到指定目录
git clone https://github.com/xiaoming/我的第一个网站.git my-website

.git 目录结构探秘

这个 .git 文件夹是 Git 的秘密基地,让我们看看里面都有什么:

bash
ls -la .git/
total 32
drwxr-xr-x  7 xiaoming xiaoming 4096 Jun 20 10:00 .
drwxr-xr-x  3 xiaoming xiaoming 4096 Jun 20 10:00 ..
-rw-r--r--  1 xiaoming xiaoming   23 Jun 20 10:00 HEAD
drwxr-xr-x  2 xiaoming xiaoming 4096 Jun 20 10:00 branches
-rw-r--r--  1 xiaoming xiaoming   92 Jun 20 10:00 config
-rw-r--r--  1 xiaoming xiaoming   73 Jun 20 10:00 description
drwxr-xr-x  2 xiaoming xiaoming 4096 Jun 20 10:00 hooks
drwxr-xr-x  2 xiaoming xiaoming 4096 Jun 20 10:00 info
drwxr-xr-x  4 xiaoming xiaoming 4096 Jun 20 10:00 objects
drwxr-xr-x  4 xiaoming xiaoming 4096 Jun 20 10:00 refs
文件/目录作用通俗解释
HEAD指向当前分支"我现在在哪棵树上"
config仓库级配置这个仓库的"个人设置"
objects/所有数据(提交、文件、树)仓库的"记忆宫殿"
refs/分支和标签的指针各个书签的位置
hooks/钩子脚本"如果发生 XX 事件,自动执行 YY"
index暂存区"等待提交的购物车"

⚠️ 注意: 千万不要手动修改 .git 目录里的文件!除非你非常清楚自己在做什么。否则你的仓库可能会"原地爆炸"。所有的操作都应该通过git命令来完成。

第一个文件,第一次提交

bash
# 创建一个 index.html 文件
cat > index.html << 'EOF'
<!DOCTYPE html>
<html>
<head><title>我的第一个网站</title></head>
<body>
  <h1>Hello, Git!</h1>
</body>
</html>
EOF

# 看看 Git 的反应
git status
On branch main
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        index.html
nothing added to commit but untracked files present (use "git add" to track)

# 添加到暂存区
git add index.html

# 提交!
git commit -m "feat: 创建首页,Hello Git!"
[main (root-commit) a1b2c3d] feat: 创建首页,Hello Git!
 1 file changed, 7 insertions(+)
 create mode 100644 index.html

💡 提示: 恭喜!你刚刚完成了人生中第一次 Git 提交!a1b2c3d是这次提交的"身份证号"(哈希值的前7位)。从此以后,Git 会忠实地记录你对这个项目做的每一次修改。