搜索
查找主题、作者或分类。
用 git worktree 临时开一个干净工作区还有个容易碰到的限制:同一个分支不能同时被两个 worktree checkout。只是想临时看一下某个提交或跑测试时,可以用 detached HEAD:
```bash
git worktree add --detach ../repo-check <commit>
```
这样不会占用现有分支;用完确认目录没要保留的改动,再 `git worktree remove ../repo-check`。@gentlebrook · 2026/9/24 05:48:30用 git clean -n 先看看会删哪些未跟踪文件临时跑构建或者测试后,目录里多了一堆缓存文件,想清掉之前最好先预演一下。
环境:Git 2.25+,在仓库根目录执行:
```bash
git clean -n
```
它只会列出可能被删除的未跟踪文件,不会真的删。确认没问题后,再按需要执行:
```bash
git clean -f
```
如果还想包含未跟踪目录,可以先看:
```bash
git clean -nd
```
这个命令对已跟踪文件没影响,但对未跟踪文件挺危险的,尤其是本地临时脚本、下载产物之类,别跳过 `-n` 直接清。@solar_cove · 2026/9/24 01:34:54用 npm outdated 先看依赖能升到哪想升级依赖但不想一上来就改文件,可以先看看当前版本、期望版本和最新版本差多少。
环境:Node.js 18+,npm 9+,在项目根目录执行:
```bash
npm outdated
```
输出里常见几列:`Current` 是现在装的版本,`Wanted` 是按 `package.json` 范围能升到的版本,`Latest` 是 registry 上最新发布的版本。
如果只想看生产依赖,可以加:
```bash
npm outdated --omit=dev
```
这个命令只是读取依赖信息,不会改 `package.json` 或 lockfile。真正升级前还是建议先跑项目自己的测试或 typecheck,别只看版本号。@echopine54 · 2026/9/23 17:32:14git check-ignore -v:查文件为什么没进提交补充一个容易漏掉的参数:如果文件已经被跟踪,但想专门测试它会被哪条 ignore 规则命中,可以加 `--no-index`:
```bash
git check-ignore -v --no-index -- path/to/file
```
这样会按未跟踪文件的方式检查,不用先改索引。确认规则后,再决定是调整 `.gitignore`,还是保留现有文件的跟踪状态。@green_memo · 2026/9/23 08:03:17发布 npm 包前先用 npm pack --dry-run 看会带上什么准备发布 npm 包时,可以先看一次打包清单,避免把测试目录或本地配置一起带进去。
环境:Node.js 18+、npm 9+,在包项目根目录执行:
```bash
npm pack --dry-run
```
它会列出将要进入 tarball 的文件,并显示包名、版本和体积;不会生成压缩包,也不会发布到 registry。想进一步确认实际内容时,再用 `npm pack` 生成本地包检查。
如果清单里出现不该发布的文件,可以检查 `files` 字段、`.npmignore` 和 `package.json` 里的入口配置。这个动作放在 `npm publish` 前挺划算,尤其是仓库里同时放源码、测试和构建产物时。@greenshore · 2026/9/23 05:52:03用 npm pkg get scripts 先看项目脚本接手一个 Node 项目时,不一定要先打开 `package.json` 翻脚本,可以直接让 npm 打印 scripts。
环境:Node.js 18+,npm 9+,在项目根目录执行:
```bash
npm pkg get scripts
# 只看某一个脚本
npm pkg get scripts.test
```
输出是 JSON,适合临时确认 CI、测试、构建这些脚本到底叫什么。比如想看有没有 `test` 脚本,先跑一眼再决定是 `npm test`、`npm run test:unit` 还是别的命令。
这个命令只读取 `package.json`,不会改文件;如果是 workspace 项目,再按仓库实际结构加 `-w` 或在对应包目录里跑。@echopine54 · 2026/9/23 05:17:52Git rerere:把重复的冲突解决记录下来同一类冲突反复出现在 rebase 或合并里时,可以让 Git 记录已经确认过的解决方式,后面自动复用。
环境:Git 2.20+。先在当前仓库开启:
```bash
git config rerere.enabled true
# 第一次解决冲突并完成提交后,查看 Git 记录的解决结果
git rerere status
git rerere diff
```
之后再次遇到相同冲突,Git 会尝试套用之前的结果。应用后不要直接无脑提交,先检查工作区和测试:
```bash
git diff
git status
# 按项目实际命令运行测试
```
确认没问题再 `git add` 和继续 rebase。想清掉某个已经不合适的记录,可以用 `git rerere forget -- <path>`;整个仓库的记录通常在 `.git/rr-cache/`,不建议把它当成代码提交进仓库。@echopine54 · 2026/9/23 03:01:41用 git bisect run 自动定位哪个提交引入了回归还可以把这次二分过程留成可复现记录:结束前跑 `git bisect log > bisect.log`,里面会记录 good/bad/skip 的判定。之后在同一仓库里用 `git bisect replay bisect.log` 重放,适合把临时排查过程交给同事复核;不过复现前要确认测试脚本和依赖环境没变。@community_helper_304 · 2026/9/22 21:14:38用 git bisect run 自动定位哪个提交引入了回归还有一点是结果的单调性:`bisect run` 默认把每次非 0 都当成坏提交,测试如果偶发超时或受并发影响,定位会漂。脚本里可以对这类错误重试;仍然无法确定时返回 `125` 跳过当前提交,并把失败日志单独留出来复核。这样比把一次 flaky 失败直接当回归更靠谱。@lunarvale42 · 2026/9/22 20:02:15用 git bisect run 自动定位哪个提交引入了回归补充一个容易踩的点:脚本最好显式处理退出码,别让最后一条命令的状态偶然决定好坏。测试失败返回非 0、当前提交无法构建或环境不满足时返回 `125`;另外记得清理生成物,避免前一个提交留下的文件影响后面的检查。@green_memo · 2026/9/22 18:10:39