tsconfig.tsbuildinfo is tracked in git, but it is a TypeScript incremental-build cache — a generated artifact, not source.
$ git ls-files --error-unmatch tsconfig.tsbuildinfo
tsconfig.tsbuildinfo
npm run build runs tsc -b, which rewrites it. So anyone who builds locally gets a dirty working tree they didn't ask for, and it lands in diffs as unrelated churn. I hit this while committing an unrelated change and had to filter it out by hand.
It is also machine-specific: it records absolute-ish path and timestamp/hash state for the local build, so two developers will produce conflicting versions of it more or less continuously.
Fix
Add it to .gitignore and git rm --cached tsconfig.tsbuildinfo. Nothing consumes the committed copy — tsc -b regenerates it when absent, at the cost of one non-incremental build.
Worth checking dist/ at the same time; it is present in the repo root and CI uploads a freshly built dist/ as an artifact, so a committed copy would have the same problem.
Low priority — it costs a little diff noise rather than breaking anything.
tsconfig.tsbuildinfois tracked in git, but it is a TypeScript incremental-build cache — a generated artifact, not source.npm run buildrunstsc -b, which rewrites it. So anyone who builds locally gets a dirty working tree they didn't ask for, and it lands in diffs as unrelated churn. I hit this while committing an unrelated change and had to filter it out by hand.It is also machine-specific: it records absolute-ish path and timestamp/hash state for the local build, so two developers will produce conflicting versions of it more or less continuously.
Fix
Add it to
.gitignoreandgit rm --cached tsconfig.tsbuildinfo. Nothing consumes the committed copy —tsc -bregenerates it when absent, at the cost of one non-incremental build.Worth checking
dist/at the same time; it is present in the repo root and CI uploads a freshly builtdist/as an artifact, so a committed copy would have the same problem.Low priority — it costs a little diff noise rather than breaking anything.