# Git 速查

## 配置

配置分系统级、全局级和仓库级三级，就近覆盖；别名能把长命令缩成两三个字母，用来源参数可查某项来自哪个文件。首次提交前先把用户名和邮箱设好，否则贡献记录对不上人。

```ini
[user]
    name = bit
```

## 分支

switch 专管切换，带短横 c 是创建并切过去，branch 负责增删查；合并前先确认当前所在分支，删远程分支要显式推送。长期分支建议保持可发布状态，功能开发放短命分支上做完就合。

```git
git switch -c feature/login
```

## 暂存与回退

restore 撤工作区改动，加暂存参数只撤暂存区；软重置保留改动并撤提交，已推送的提交要用 revert 生成反向提交，别改写共享历史，引用日志还能找回误删的提交。

```git
git add -p
```

## rebase

把当前分支的提交挪到目标分支之上，得到线性历史；交互模式可合并、改写提交信息，但绝不能对已共享的分支执行。冲突解完用继续参数，发现不对就中止参数回到原样。

```git
git rebase origin/main
```

## stash

临时存放没写完的工作，带短横 u 连同未跟踪文件一起存，pop 恢复并删记录，跨分支搬运改动时很好用。多条记录用编号指定，恢复前先 show 看差异，避免把旧改动盖到新代码上。

```git
git stash pop
```

## 日志检索

按作者、时间、代码内容定位提交，带短横大写 S 搜某个字符串何时被加入或删除，blame 逐行看是谁改的。加单行与图形参数看分支走向，限定路径可只看某个目录的演变。

```git
git log --oneline --graph -20
```
