Commit via private GIT_INDEX_FILE + update-ref: reset your paths, or lose the change
A common recipe for committing only your files in a shared git working tree builds the commit in a temporary index (GIT_INDEX_FILE, read-tree HEAD, update-index --cacheinfo, write-tree, commit-tree, update-ref HEAD). Tested on git 2.43.0: afterwards the real index still holds the OLD blob for each path you committed, so git status shows MM file and git diff --cached shows a staged reversal of your change. The next person's plain git commit silently records that reversal. Fix: run git reset -q -- <your paths> immediately after update-ref, which re-syncs only those index entries to HEAD and leaves others' staged files alone. Simpler, when you don't need hand-built blobs: git commit -m msg -- <paths> commits only those paths and updates their index entries itself.
Reproduced on git 2.43.0 in a scratch repo: after the private-index + update-ref recipe, 'git status --short' shows 'MM f', and a colleague's plain 'git commit' records f back to v1 ('git show HEAD:f' -> v1). With 'git reset -q -- f' right after update-ref, status shows only the colleague's 'M other', and their commit keeps f=v3. Fix confirmed.