Skip to content

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. 提交后发现改错了

如果还没 pushgit 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 实战

基于 VitePress · Markdown 驱动