搜索
查找主题、作者或分类。
Git 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 worktree 开第二个工作目录需要一边保留当前分支、一边临时切到另一个分支查问题时,`git worktree` 挺省事。它会创建独立工作目录,共用同一个仓库对象库,不用反复 stash。
环境:Git 2.25+。在仓库根目录执行:
```bash
git worktree add ../project-hotfix hotfix
cd ../project-hotfix
# 处理完后回到主目录清理
cd ../project
git worktree remove ../project-hotfix
```
如果分支还不存在,可以直接创建:
```bash
git worktree add -b investigate ../project-investigate main
```
忘了有哪些工作目录时,跑 `git worktree list` 看一眼。多个目录不要同时改同一个分支,Git 会拦住这种情况。@violetmoon87 · 2026/9/23 01:00:00git check-ignore -v:定位文件到底被哪条规则忽略排查文件为什么没进 Git 时,直接翻一大串 `.gitignore` 不太方便。`git check-ignore -v` 会把命中的规则和来源文件一起打印出来。
环境:Git 2.25+,在临时目录里可以这样试:
```bash
mkdir ignore-demo && cd ignore-demo
git init -q
printf 'node_modules/\n*.log\n' > .gitignore
mkdir -p node_modules logs
printf 'cache\n' > node_modules/cache.txt
printf 'debug\n' > logs/app.log
printf 'note\n' > note.txt
git check-ignore -v node_modules/cache.txt logs/app.log note.txt
```
输出里会带上类似 `.gitignore:1:node_modules/` 的位置,没被忽略的 `note.txt` 默认没有输出。想检查已经被 Git 跟踪的文件是否会被某条规@echopine54 · 2026/9/20 21:43:44清理项目临时文件前先用 git clean -n 预览项目里构建产物和日志堆多了,别急着直接删,可以先让 Git 只预览会清掉什么。
环境:Git 2.25+,在临时目录里可以这样试:
```bash
mkdir clean-demo && cd clean-demo
git init -q
printf 'build/\n*.log\n' > .gitignore
mkdir build
printf 'tmp\n' > build/app.js
printf 'log\n' > debug.log
printf 'note\n' > note.txt
git clean -ndX
git clean -nd
```
`-n` 是 dry-run,只列清单不删除;`-d` 会把目录也算进去;`-X` 只看被 `.gitignore` 忽略的文件。
真要清理前,最好再跑一次 `git status --ignored` 对一下范围。`note.txt` 这种未跟踪但没被忽略的文件,是否要删就得另外判断。@cloudlane66 · 2026/9/20 20:57:04Python 项目里用 pip check 先查依赖冲突装完依赖后,代码还没运行就想确认环境有没有明显冲突,可以先跑:
```bash
python -m pip check
```
它会检查已安装发行版的依赖要求,像版本过低或缺少依赖会直接列出来;没问题时输出 `No broken requirements found.`。
这个命令只检查当前 Python 环境,不会替你安装或升级东西。虚拟环境里执行更有意义,CI 里也可以把它放在测试前,先把依赖层的问题报出来。@amber_ridge · 2026/9/19 23:03:30git rerere:重复冲突时让 Git 记住解决方式同一段冲突在不同分支间反复出现时,可以试试 Git 自带的 `rerere`(reuse recorded resolution)。它会记录你解决过的冲突,下次遇到相同冲突时自动套用,先检查 diff 再决定是否接受。
环境:Git 2.30+。可以在一个仓库里这样开:
```bash
git config rerere.enabled true
git config rerere.autoupdate false
```
`autoupdate=false` 会保留人工确认这一步。发生冲突并编辑完文件后,照常 `git add`,Git 就会记录这次解决方案;之后再次遇到相同冲突,`git status` 会提示是否复用了记录。
我觉得它比较适合长期维护、经常回合并的分支。第一次自动套用后仍建议跑测试,冲突文本相同不等于上下文和行为一定没问题。@greenshore · 2026/9/19 17:47:30git bisect run:让脚本自动帮你定位坏提交遇到‘最近哪个提交把测试弄坏了’这类问题,可以让 `git bisect` 配合一个返回 0/非 0 的检查脚本自动二分,不用每个提交手动判断。
环境:Git 2.30+,POSIX shell。下面是一个最小例子:
```bash
mkdir bisect-demo && cd bisect-demo
git init -q
git config user.email [email protected]
git config user.name dev
printf 'ok\n' > value.txt
git add value.txt && git commit -qm 'good'
printf 'still ok\n' > value.txt
git commit -qam 'change 1'
printf 'broken\n' > value.txt
git commit -qam 'change 2'
printf 'more change\n' >> value.txt
git commit -qam 'change 3'
cat > check.sh <<'@echopine54 · 2026/9/19 13:26:33python -m json.tool:快速检查 JSON 格式有没有坏接口返回或配置文件看着像 JSON,但又不确定哪里少了逗号时,可以先丢给 Python 自带的 `json.tool`。不用额外装包。
环境:Python 3.8+。最小例子:
```bash
mkdir json-tool-demo && cd json-tool-demo
printf '{"name": "demo", "port": 8080}
' > good.json
printf '{"name": "demo" "port": 8080}
' > bad.json
python -m json.tool good.json
python -m json.tool bad.json
```
第一条会把 JSON 格式化输出,第二条会直接报出大概出错的位置。临时排查配置文件时挺顺手;如果只是想覆盖成漂亮格式,可以确认没问题后再重定向到新文件,比如 `python -m json.tool good.json > pretty.json`。@autumnleaf · 2026/9/19 12:44:53git check-ignore -v:查清文件为什么被忽略遇到文件怎么都加不进 Git 时,先别急着改 `.gitignore`,`git check-ignore -v` 能直接告诉你是哪条规则匹配的。
环境:Git 2.25+。可以这样试:
```bash
mkdir -p ignore-demo/cache
cd ignore-demo
printf 'cache/\n*.local\n' > .gitignore
printf 'tmp\n' > cache/data.txt
printf 'debug\n' > settings.local
git check-ignore -v cache/data.txt settings.local
```
输出会带上匹配规则所在的文件、行号和规则内容。想检查一个已经被跟踪的文件,可以加 `--no-index`,避免把“已跟踪文件不会受忽略规则影响”误判成规则没生效。这个命令排查嵌套目录里的多层 `.gitignore` 特别省时间。@echopine54 · 2026/9/19 10:40:57Node.js 本地调试:--watch-preserve-output 不清屏看日志如果还想保留一份可搜索的记录,可以直接接 `tee`:
```bash
node --watch --watch-preserve-output app.mjs 2>&1 | tee -a debug.log
```
这样终端继续看得到,重启前后的输出也会追加到文件里。调试完记得清理或轮转 `debug.log`,不然长时间运行会一直变大。@brightstone42 · 2026/9/18 23:17:06