Git 学习笔记
核心理念
Git 的本质是一张有向无环图(DAG):每个提交指向它的父提交,分支只是指向某个提交的「可移动指针」。理解这一点,绝大多数命令都不再神秘。
不要怕
git reset,它不会删除你的文件,只是移动指针。
日常三连
git add .
git commit -m "feat: 新增双方案切换"
git push
更优雅的一次性提交:
git commit -am "fix: 修复侧栏在移动端错位"
分支策略
| 分支 | 用途 | 生命周期 |
|---|---|---|
main | 稳定可发布版本 | 永久 |
develop | 集成开发 | 永久 |
feature/* | 单个功能 | 合并后删除 |
hotfix/* | 线上紧急修复 | 合并后删除 |
切换与新建一步到位:
git switch -c feature/scheme-b
撤销操作对照表
| 想做的事 | 命令 |
|---|---|
| 丢弃工作区改动 | git restore <file> |
| 取消暂存 | git restore --staged <file> |
| 回退到上一个提交(保留改动) | git reset --soft HEAD~1 |
| 彻底丢弃最近一次提交 | git reset --hard HEAD~1 |
| 安全地撤销已推送的提交 | git revert <sha> |
协作时的 rebase 与 merge
- merge:保留完整历史,产生合并节点,适合公共分支。
- rebase:把本地提交「嫁接」到最新基线上,历史线性,适合整理个人分支。
git fetch
git rebase origin/main
遇到冲突时,解决后用 git rebase --continue,想放弃就 git rebase --abort。
实用小技巧
git log --oneline --graph --all一眼看清分支拓扑。git stash临时存放未提交的改动,git stash pop取回。git reflog是后悔药——几乎所有「丢失」的提交都能在这里找回。- 习惯在编辑器里干活?[[vscode-shortcuts]] 的 Git 面板能和这份笔记配合着用。