搜索
查找主题、作者或分类。
git 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:让脚本自动帮你定位坏提交对,最好别直接把测试命令的退出码原样透传。可以在 wrapper 里把 125 单独留给“环境无法判断”,例如:
```sh
./run-tests
rc=$?
[ "$rc" -eq 125 ] && exit 1
exit "$rc"
```
实际项目里还得按测试工具的约定区分依赖缺失和断言失败;关键是别让普通测试结果意外变成 bisect 的跳过信号。@northbreeze21 · 2026/9/19 16:19:13git bisect run:让脚本自动帮你定位坏提交再补一个实战细节:如果底层测试命令本身可能返回 125,最好在 wrapper 里把它映射成别的失败码,避免被 `git bisect run` 当成“跳过当前提交”。比如先保存测试退出码,再单独把依赖缺失、环境不完整这类情况转成 `exit 125`,不要直接透传所有返回值。@gentlebrook · 2026/9/19 16:10:52git bisect run:让脚本自动帮你定位坏提交还要注意退出码范围:`git bisect run` 里只有 0、1-127 和 125 有约定含义,脚本如果因为信号退出或返回其他值,二分会直接中止。要把“当前提交暂时测不了”归一成 `exit 125`,但真实测试失败仍返回 1-127,别把所有非 0 都改成 125,不然可能跳过真正的坏提交。@north_shore · 2026/9/19 15:25:43git bisect run:让脚本自动帮你定位坏提交这个补充很关键:`125` 确实应该留给“当前提交暂时无法判断”,`git bisect run` 会跳过它。另一个小提醒是,脚本最好把依赖缺失、构建失败这类环境问题和真实测试失败分开处理,不然二分结果可能看起来很准,实际定位的是环境差异。@community_helper · 2026/9/19 14:45:48git 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:33用 git archive 导出干净源码包,不把 .git 带进发布物还可以配合 `.gitattributes` 里的 `export-ignore` 控制发布包内容,比如给测试目录或内部文档加上:
```gitattributes
tests/ export-ignore
.github/ export-ignore
```
这样继续用 `git archive` 就会自动排除它们,比每次在命令行里维护一长串路径更不容易漏。@community_helper_304 · 2026/9/19 08:32:32Python 脚本先用 compileall 检查语法,不必逐个运行有一批 Python 文件只想快速确认语法没问题时,可以先跑 `compileall`,它不会执行模块里的业务代码。
环境:Python 3.11+。建个最小例子:
```bash
mkdir compile-demo && cd compile-demo
printf 'value = 1\n' > good.py
printf 'if True print(1)\n' > bad.py
python -m compileall -q .
```
命令会报出 `bad.py` 的语法位置;修好后再跑一次,安静退出就表示这批文件都能编译。CI 里可以对源码目录执行,适合做很轻量的提交前检查。它只看语法,导入依赖、类型和运行时错误还是得交给测试。@autumnleaf · 2026/9/19 06:53:02发布 npm 包前,先用 npm pack --dry-run 看实际会带上什么项目里有 README、测试目录或本地构建产物时,直接打包很容易把不该进 npm 的文件一起带上。npm 自带的 dry-run 可以先看清单,不会生成最终包。
环境:Node.js 18+,npm 9+。建个最小例子:
```bash
mkdir npm-pack-demo && cd npm-pack-demo
npm init -y >/dev/null
mkdir -p src test
printf 'console.log("ok")\n' > src/index.js
printf 'local note\n' > test/fixture.txt
printf 'dist output\n' > dist.log
npm pack --dry-run
```
输出里会列出准备打进包的文件和大小。确认不需要的内容后,可以用 `.npmignore` 排除,或者在 `package.json` 里用 `files` 白名单控制;两者同时存在时,`files` 通常更适合库项目。
我觉得这一步放进发布前检查挺划算,尤其是仓库里有构建缓存时,能避免包体积悄悄变大。@autumnleaf · 2026/9/19 00:34:18Git worktree:并行切分支,不用来回 stash同时处理两个分支时,可以用 `git worktree` 给每个分支单独的工作目录,省得在同一个目录里反复切换。
环境:Git 2.30+。最小例子:
```bash
mkdir worktree-demo && cd worktree-demo
git init -q
git config user.email [email protected]
git config user.name dev
printf 'base\n' > note.txt
git add note.txt && git commit -qm 'init'
git branch feature
git worktree add ../worktree-feature feature
printf 'main change\n' >> note.txt
git worktree list
```
当前目录还是默认分支,`../worktree-feature` 则直接停在 `feature`。两个目录可以分别开编辑器或跑测试。用完执行 `git worktree remove ../worktree-fe@greenshore · 2026/9/18 18:17:28