EP03. “建立仓库与基本存档流程(init、clone、add、commit、status、log、.gitignore)”
🔒 登录后可标记已读- 日常用 Git,八成时间都只在重复同一个循环:改文件 →
git status→git add→git commit - 仓库有两种来源:自己
git init新建,或git clone复制一份现成的 .gitignore决定哪些文件永远不要进 Git,例如wp-config.php里的数据库密码、node_modules这种几百 MB 的依赖文件夹- commit 说明写得好,半年后回来看历史才看得懂当初改了什么
重点内容
建立仓库:init 或 clone
| 情况 | 指令 | 结果 |
|---|---|---|
| 已经有一个项目文件夹,想开始用 Git 管 | git init | 在当前文件夹生成隐藏的 .git,变成空仓库 |
| GitHub 上已经有仓库,想下载到电脑 | git clone 网址 | 新建同名文件夹,里面有全部文件和完整历史,远端已自动设为 origin |
# 在现有项目文件夹里开始用 Git
cd my-website
git init
# 把 GitHub 上的仓库整份下载下来
git clone https://github.com/aidentan/my-website.git
💡 Windows 上可以在项目文件夹里按右键 → Open Git Bash here,就不用 cd 一路切过去。
文件的四种状态
flowchart LR
subgraph U["Untracked 未追踪"]
U1["新文件,Git 还没管它"]
end
subgraph M["Modified 已修改"]
M1["改了但还没 add"]
end
subgraph S["Staged 已暂存"]
S1["add 了,等 commit"]
end
subgraph C["Committed 已存档"]
C1["已进历史,没有新改动"]
end
U -->|git add| S
M -->|git add| S
S -->|git commit| C
C -->|编辑文件| M
日常循环:status → add → commit
git status # 看现在哪些文件改了、哪些已暂存
git add index.html # 把单个文件放进暂存区
git add css/ # 把整个文件夹的改动放进暂存区
git add . # 把当前文件夹里所有改动都放进暂存区
git commit -m "修正首页页脚的联络电话"
| 指令 | 用途 |
|---|---|
git status | 最常用,不确定现在是什么状态就打它 |
git add 文件 | 把改动放进暂存区 |
git add . | 所有改动一次放进去(先 git status 确认没有不该加的文件) |
git commit -m "说明" | 存档,-m 后面是这次的说明 |
git commit | 不加 -m 会打开编辑器让你写较长的说明 |
git diff | 看还没 add 的改动逐行差异 |
git diff --staged | 看已经 add、准备 commit 的差异 |
查看历史:git log
git log # 完整历史(按 q 离开)
git log --oneline # 一个 commit 一行,最常用
git log --oneline --graph --all # 连分支关系一起画出来
git show a1b2c3d # 看某一个 commit 改了什么
git log --oneline 的输出长这样:
a1b2c3d 修正首页页脚的联络电话
9f8e7d6 新增关于我们页面
4c5b6a7 初始版本
前面那串就是 commit hash(缩短版),之后回滚、比较都靠它指定是哪一个 commit。
📌 在 git log 画面里按 q 才能离开,很多新手卡在这里以为电脑当机。
commit 说明怎么写
| ❌ 不好的写法 | ✅ 好的写法 |
|---|---|
update | 修正手机版菜单按钮点不开 |
fix | 结账页运费改成 RM8(东马 RM15) |
改了很多东西 | 拆成几个 commit,一个 commit 只做一件事 |
- 第一行简短说「这次做了什么」(约 50 个字母内),需要的话空一行再写详细原因
- 一个 commit 只做一件相关的事,将来要撤销也只会撤掉那一件
.gitignore:告诉 Git 哪些文件不要管
在仓库根目录建一个名叫 .gitignore 的文件,一行一个规则:
# 敏感资料
.env
wp-config.php
# 依赖和自动生成的文件
node_modules/
vendor/
dist/
# 系统垃圾文件
.DS_Store
Thumbs.db
# 所有 log 文件
*.log
| 写法 | 意思 |
|---|---|
.env | 忽略任何位置名叫 .env 的文件 |
node_modules/ | 忽略整个文件夹 |
*.log | 忽略所有 .log 结尾的文件 |
/todo.txt | 只忽略根目录的 todo.txt |
!keep.log | 例外:前面忽略了 *.log,但这个要保留 |
💡 GitHub 新建仓库时可以直接选 Add .gitignore 模板(例如 Node、WordPress),不用从零写;更多模板见 github.com/github/gitignore。
⚠️ .gitignore 只对还没被追踪的文件有效。文件已经 commit 过,再加进 .gitignore 也不会自动停止追踪,要先执行 git rm --cached 文件名 把它移出追踪(文件本身会留在电脑里)。
学完你会
- ✅ 用
git init或git clone建立仓库 - ✅ 熟练
status → add → commit日常循环 - ✅ 用
git log --oneline查看历史 - ✅ 写
.gitignore排除敏感和不必要的文件
常见错误
- ❌ 在整个
C:\Users\你的名字或桌面执行git init:整个用户目录都被 Git 管,git status列出几千个文件。要进入项目文件夹再 init。 - ❌ 习惯性
git add .不先看 status:把.env、大型影片档一起加进去。 - ❌ 一天只 commit 一次,说明写 update:出问题时找不到是哪一个改动造成的。
- ❌ 以为加进
.gitignore就会从仓库消失:已追踪的文件要git rm --cached。 - ❌ 在
git log画面不知道怎么出来:按q。
Sources
官方文档: