实测 Python UnicodeDecodeError:invalid continuation byte(GBK 常见)、invalid start byte、unexpected end of data 各自的字节;Python 3.15.0 里即使 LC_ALL=C,open() 默认编码仍是 utf-8;逐个候选解码时“不报错”不等于“对”;errors=surrogateescape 是唯一能还原原字节的;UTF-8 BOM 让 json.load 报错、让 csv 列名带 \ufeff。
实测 pip externally-managed-environment:Homebrew 的 Python 3.15.0 在标准库目录放了 EXTERNALLY-MANAGED 标记文件;pip install、install --user、uninstall 被拦,--target / --prefix / 只读命令放行;venv 创建约 1.90 s、11.8 MB,里面没有标记;--break-system-packages 与 PIP_BREAK_SYSTEM_PACKAGES=1 等价,会写进 Homebrew 的 site-packages。
实测 asyncio.run() cannot be called from a running event loop:async 里调用 asyncio.run 与 run_until_complete 的两种报错,忘括号是另一个 TypeError;asyncio REPL(同 Jupyter 机制)里必须顶层 await;await、gather、to_thread 里 asyncio.run 的写法都是 0.20 s;同步封装怎么判断是否有运行中的循环;no running event loop、Event loop is closed、bound to a different event loop 的复现。
实测 Python RuntimeWarning: coroutine was never awaited:默认警告指向 asyncio/events.py 而不是你的行,-X tracemalloc 与 -X dev 才给创建位置,-W error 变不成异常;asyncio.sleep(1) 没 await 只用 0.0046 s;if 里漏 await 条件永远为真;没人管的 create_task 在 asyncio.run 结束时丢掉;async 里 time.sleep 三个任务 0.61 s 对 0.20 s。
实测 Git push 被拒 ! [rejected] non-fast-forward / fetch first:两个括号的区别,pull 合并与 pull --rebase 各改了什么(哈希 8a852e3 变 bbc4ebe),--force-with-lease 在 fetch 之后仍会覆盖对方提交,git pull 分叉时的 fatal,以及 [remote rejected] 与 [rejected] 的区别。
实测 Git “You are in detached HEAD state”:HEAD 文件变成了哈希,游离状态下提交再切走只有一条警告,main 里没有它;reflog 能找回,手动过期并 gc 之后 Not a valid object name;checkout 标签、远程分支、变基、子模块也会游离;怎么保住提交。
实测 Git CONFLICT (content): Merge conflict:merge、rebase、stash pop、cherry-pick 的收尾命令各不同;rebase 里 --ours 与 --theirs 和 merge 相反;UU、AA、UD 状态码对应哪种冲突;zdiff3、-X ours(悄悄丢改动)、rerere 的实际效果。
实测 Git fatal: refusing to merge unrelated histories:本地 git init 再关联有 README 的远程时的完整报错顺序(push 先报 fetch first,pull 再报 divergent,--no-rebase 才报 unrelated),pull --rebase 反而成功;--allow-unrelated-histories 后根提交仍是 2 个,同名 README 是 add/add 冲突;重新 init 后根提交哈希 7a4645e 变 357531c。
实测 Git fatal: Unable to create .git/index.lock: File exists:14 个命令里只有写暂存区的 5 个被挡;git commit -a 在 pre-commit 钩子期间握着锁而普通 commit 不握;钩子运行时手工删锁会让 commit 报 repository has been updated, but unable to write new index file;HEAD.lock 与 config.lock 的报错不同;两个进程各 add 100 个文件有 80 次撞锁。
实测 Git *** Please tell me who you are / Author identity unknown:这台 macOS 默认会自动拼登录名@主机名并成功提交,要设 user.useConfigOnly 才报错;哪些命令需要身份(commit、revert、tag -a)哪些不要(add、stash);全局、仓库、-c、环境变量的优先级;includeIf 按目录换邮箱;配错身份后 amend 与 rebase 的修法。
实测 Git push 大文件被拒:服务端上限 5 MiB、本地 12 MiB 文件得到 remote rejected (unpacker error);再提交一次删除没用;没推送过就 reset --soft 重提,gc 后 .git 12432 KB 降到 120 KB;已推送要 filter-branch 重写并强制推送,服务端旧对象需要它自己 gc;Git LFS 指针只有 133 字节。
实测 npm ERESOLVE unable to resolve dependency tree:Found / Could not resolve dependency 两块怎么读;--legacy-peer-deps 与 --force 装出的结果和锁文件完全相同,只是后者打印警告;换兼容版本、overrides 的效果;npm 7 以后自动安装 peer 依赖,.npmrc 里设置 legacy-peer-deps 的含义。