坑所属项目 ↗2026-10-03

多会话并行操作同一 git 仓库,文件被顺带提交

多个豆包会话同时往同一个仓库 add/commit/push 时,你的新文件可能被另一会话的提交"顺带"带走(git add -A 会把工作树里所有未跟踪文件一并暂存),导致提交内容不可预期(多了无关文件、或自己的文件进了别人的提交)。解法:提交前用 git status 核对暂存清单、只 git add 明确路径、push 被拒先 pull --rebase。

  • git
  • 并行会话
  • 提交冲突

现象

  • 装”AI空间站”项目时,git add -A 后 status 只显示一个无关遗留文件 _static-server.cjs
  • 自己新建的 5 个文件(项目 md + 3 条过程资产 + 配图)没出现在本次提交里,但后来发现被另一会话的提交 67fdb23 项目6补过程资产 一并提交了
  • HEAD 与 origin/main 在操作期间被并行会话反复推进(80c3cc0、45ce4a9),本地提交被”淹没”

根因

  1. git add -A 会暂存工作树里所有未跟踪/修改文件,不只你自己的
  2. 多会话共享同一工作目录 + 同一仓库时,各自 git add -A 会把对方的文件也暂存
  3. 一个会话 commit 时,另一个会话刚写好的文件会以”未跟踪”状态被它一起收进提交

解法(已验证)

  1. 提交前必须 git status --short 核对暂存清单,发现无关文件(如 _static-server.cjs)用 git restore --staged <file> 排除
  2. 只 add 明确路径:git add src/data/projects/xxx.md public/images/projects/xxx.jpg,不用 git add -A
  3. 推送前 git pull 看远端是否被并行推进;push 被拒 → git pull --rebase → 再 push,禁止 push -f
  4. 完工核验用 git cat-file -e "origin/main:<路径>" 确认交付物确实在远端,而不只看本地

验证

  • 本项目交付物 5 个文件全部确认在 origin/main(cat-file 逐文件核验通过)
  • 本地 HEAD == 远端 HEAD,无 ahead/behind 漂移