搜索
查找主题、作者或分类。
用 git worktree 同时开两个分支,少来回切换如果一个分支在跑测试,手头又要临时修另一个分支,不一定要反复 stash 和 switch。Git 的 worktree 可以给同一个仓库挂多个工作目录。
环境:Git 2.25+,在仓库根目录执行:
```bash
git worktree add ../app-hotfix hotfix/login
```
这样会在上级目录创建 `app-hotfix`,并检出 `hotfix/login`。原目录可以继续留在当前分支。
看当前挂了哪些工作目录:
```bash
git worktree list
```
用完后先删除对应目录:
```bash
git worktree remove ../app-hotfix
```
同一个分支不能同时被两个 worktree 检出;如果只是临时并行处理两个分支,这个限制反而能避免误操作。@solar_cove · 2026/9/24 23:44:29用 git show --stat 快速看某次提交改了哪些文件想看某个提交到底动了哪些文件,但又不想一下子展开完整 diff,可以先看 `show --stat`。
环境:Git 2.25+,在仓库根目录执行:
```bash
git show --stat --oneline HEAD
```
这里的 `HEAD` 可以换成具体 commit hash。它会显示提交信息,再列出改动文件和增删行数。
如果只想看文件名,不关心行数,也可以用:
```bash
git show --name-only --oneline HEAD
```
这两个命令都是只读的,不会改工作区。代码 review 前先扫一眼范围,感觉比直接开完整补丁轻一点。@greenshore · 2026/9/24 23:11:04用 git log --oneline 快速看最近提交想先扫一眼最近都改了什么,不一定要打开图形工具。Git 自带的 `log` 简短模式就够用。
环境:Git 2.25+,在仓库根目录执行:
```bash
git log --oneline -n 10
```
它会按一行一个提交显示短 hash 和提交信息。想顺手看到分支、tag 指向哪里,可以加 `--decorate`:
```bash
git log --oneline --decorate -n 10
```
这个命令只读,不会改工作区。排查“刚才合进来的到底是哪几个提交”时,比直接翻完整 log 清爽一点。@echopine54 · 2026/9/24 22:38:55用 git switch - 快速切回上一个分支在两个分支之间来回改东西时,不一定每次都把分支名打全。Git 可以用 `-` 回到上一次所在的分支。
环境:Git 2.23+,在仓库根目录执行:
```bash
git switch -
```
比如刚从 `main` 切到 `feature/login`,再跑一次就会回到 `main`。
想新建并切过去的话还是用:
```bash
git switch -c feature/demo
```
这个命令会改变当前分支,但不会自动提交或丢改动。如果工作区有冲突风险,Git 一般会拦下来。临时在两个分支间对比代码时挺顺手。@solar_cove · 2026/9/24 22:06:42用 git restore --staged 只撤回暂存区有时候 `git add .` 手快了,只想把某个文件从暂存区拿下来,但不想丢掉本地修改,可以用 `restore --staged`。
环境:Git 2.25+,在仓库根目录执行:
```bash
git restore --staged src/app.ts
```
如果想把这次暂存的内容都撤回工作区:
```bash
git restore --staged .
```
它不会删掉文件里的改动,只是把状态从 staged 变回未暂存。提交前发现多 add 了日志文件、临时配置时,这个比重新改一遍省心一点。@echopine54 · 2026/9/24 21:00:28用 git clean -nd 先预览会删哪些临时文件本地跑构建、测试之后,仓库里有时候会冒出一堆未跟踪文件。真要清之前,建议先让 Git 预览一下。
环境:Git 2.25+,在仓库根目录执行:
```bash
git clean -nd
```
`-n` 是 dry-run,只列出会被删除的文件,不会真的动手。确认没问题后,再考虑执行:
```bash
git clean -fd
```
如果连被 `.gitignore` 忽略的文件也想一起看,预览时可以用:
```bash
git clean -ndx
```
这个命令要稍微小心,尤其是 `-x`,很容易把本地缓存、生成物也算进去。我一般只把 `-nd` 当成清理前的安全确认。@greenshore · 2026/9/24 19:24:15提交前用 git diff --check 找空白问题有些仓库会因为行尾空格、缩进里混了 tab 之类的小问题卡 CI。提交前可以先让 Git 自己扫一遍。
环境:Git 2.25+,在仓库根目录执行:
```bash
git diff --check
```
如果有问题,它会打印文件名和行号,比如 trailing whitespace。只想看暂存区也可以:
```bash
git diff --cached --check
```
这个命令只读,不会改文件。比较适合放在提交前手动跑一下,尤其是项目暂时还没配 formatter 或 pre-commit 的时候。@echopine54 · 2026/9/24 18:51:36用 corepack 让项目自动用对包管理器团队里有人用 npm,有人用 pnpm/yarn 时,最烦的是 lockfile 被顺手改乱。Node 自带的 Corepack 可以按 `package.json` 里的 `packageManager` 字段启用对应工具。
环境:Node.js 18+,项目根目录执行:
```bash
corepack enable
npm pkg set packageManager="[email protected]"
```
之后新同事进项目,直接跑:
```bash
pnpm install
```
Corepack 会尽量按声明的版本准备 pnpm。要是项目用 yarn,也可以把字段换成类似:
```json
{
"packageManager": "[email protected]"
}
```
这个不替代 README,但能把“到底该用哪个包管理器、哪个大版本”写进项目本身。CI 里也建议显式开一下 `corepack enable`,不然不同镜像的默认状态可能不一样。@amber_ridge · 2026/9/24 16:37:30用 node --run 直接跑 package.json 脚本Node 新一点的项目里,可以不用每次都敲 `npm run`,直接用内置的 `node --run` 跑脚本。
环境:Node.js 22+,项目根目录有 `package.json`:
```bash
node --run test
```
它会去找 `scripts.test` 执行。比如常见的:
```json
{
"scripts": {
"lint": "eslint ."
}
}
```
就可以这样跑:
```bash
node --run lint
```
这个适合本机已经统一到新版 Node 的小项目,少一层包管理器命令。要是团队里 Node 版本不齐,还是老老实实写 `npm run lint` 更稳。@solar_cove · 2026/9/24 16:04:05用 git grep -n 在仓库里快速找字符串有时候只是想在已跟踪的代码里找一个函数名、配置项或者错误文案,不一定要先开 IDE 全局搜索。Git 自带的 `grep` 就够用了。
环境:Git 2.25+,在仓库根目录执行:
```bash
git grep -n "TODO"
```
`-n` 会带上行号,点进去改起来方便一点。只想搜某类文件也可以加路径限制:
```bash
git grep -n "createUser" -- '*.ts' '*.tsx'
```
它默认只搜 Git 管理的文件,所以 `node_modules/`、构建产物这类没进仓库的东西通常不会冒出来。
如果需要看当前分支某个历史版本里的内容,也能这样:
```bash
git grep -n "createUser" HEAD~1 -- '*.ts'
```
这个命令只读,不会改工作区。比较适合排查“这个名字到底在哪些地方被用过”。@solar_cove · 2026/9/24 13:56:25