主题
Git 基础
Git 是什么
Git 是一个版本控制系统。你可以把它想象成一个"带存档的游戏":每次存档后,无论后面怎么改、改坏了,都能随时读档回到之前任意一次存档,还能看到每一条改动是谁、在什么时候、改了什么。
- 每一次"存档"叫一次提交(commit)
- "存档记录"提交后,项目就能在多个版本间自由切换
- 多人协作时,各自在自己电脑上改,最后合并到一起,Git 负责协调
本 Wiki 的所有内容都存放在 GitHub 上的一个 Git 仓库里(thuphys-thirstywiki/SUsite)。理解了 Git 的流程,你就掌握了投稿的底层逻辑。
核心概念
| 概念 | 说明 | 类比 |
|---|---|---|
| 工作区(working directory) | 你正在编辑的文件所在的文件夹 | 正在做的作业 |
| 暂存区(staging area) | 提交前先"点名"要保存哪些文件 | 准备提交的清单 |
| 提交(commit) | 把暂存的内容正式"存档",并写一句说明 | 完成一版作业并保存 |
| 分支(branch) | 从主线上分出去的独立修改线 | 平行世界 |
| 主分支(main) | 正式版本所在的分支 | 正式发布的版本 |
| 远程(remote) | 服务器上的仓库,大家共享的那份 | 云端备份 |
一次完整的提交流程:
修改文件 → git add(加入暂存区) → git commit(正式存档) → git push(传到远程)常用命令速查
基础三连(最重要的三个命令)
bash
git status # 查看当前状态:改了哪些文件、哪些还没提交
git add . # 把所有改动加入暂存区(. 表示"当前目录所有文件")
git commit -m "说明" # 正式存档,-m 后面的引号里写本次改动的说明
git push # 把本地的提交传到远程仓库下载与同步
bash
git clone <仓库地址> # 首次把远程仓库复制到本地
git pull # 把远程最新的改动拉取下来(提交前建议先执行)分支操作
bash
git branch # 查看所有分支,* 标在当前位置
git checkout -b 名字 # 新建并切换到一个新分支
git checkout 名字 # 切换分支撤销与应急
| 我做了什么 | 怎么处理 |
|---|---|
| 文件改乱了,想放弃修改 | git checkout -- 文件名(仅对未提交的改动有效) |
| 刚提交了,但提交信息写错了 | git commit --amend -m "新说明"(仅本地未推送时) |
| 想撤回最近一次提交,保留改动 | git reset --soft HEAD~1 |
| 看到"冲突(conflict)"提示 | 不要慌,见下方"常见问题" |
慎用
git reset --hard 会丢弃所有未提交的修改,git push --force 会覆盖远程历史。这两条命令在没把握前不要使用。
常见问题
1. 提示"冲突(conflict)"
别人和你改了同一个文件,Git 不知道以谁为准。文件里会出现这样的标记:
<<<<<<< HEAD
(你本地的内容)
=======
(远程的内容)
>>>>>>> 分支名手动把两边内容整理成想要的最终版,删掉 <<<<<<<、=======、>>>>>>> 这几行,然后 git add + git commit 即可。
新手建议
遇到冲突如果没把握,先别自己处理,把情况发给管理员协助。冲突通常不难,但需要理解上下文。
2. 我 commit 了但忘了 push
push 之后才到远程,忘了就补一条 git push 即可。
3. 提交后发现改错了
如果还没 push:git commit --amend 可以修正。 如果已经 push:最稳妥是再提交一次"反悔"的修改,不要试图改写已上传的历史。
4. 每次都要输密码很烦
本仓库已配置 SSH 免密推送(git push 直接生效),如果你自己 clone 的仓库用 https 仍要密码,可以在 GitHub 文档中搜索 "add SSH key" 配置一次。
应用到本 Wiki
对本 Wiki 来说,日常基本就是:
bash
git pull # 1. 先拉最新
# 编辑 docs/ 下的 Markdown 文件
git add . # 2. 加入暂存
git commit -m "新增词条:中秋晚会" # 3. 存档并写说明
git push # 4. 推到远程,自动触发网站更新更具体的编辑流程见 编辑本 Wiki 实战。