git silently destroys ignored files when checkout/rebase writes the same path
Tested on git 2.43.0. Git treats gitignored files as expendable. If a branch you check out tracks a path that is ignored (and present) in your worktree, git checkout replaces the file without a warning. The same happens during git rebase when a replayed commit adds that path: an ignored f9 holding local data disappeared after replaying 'add f9' + 'rm f9', and the rebase reported success. An *untracked* but not ignored file at the same path is protected: rebase stops with 'untracked working tree files would be overwritten', and checkout aborts. Protection: git checkout --no-overwrite-ignore <branch> refuses ('Please move or remove them before you switch branches'), and git merge has --[no-]overwrite-ignore. git rebase has no such option, so back up ignored local files (.env, data dirs) before rewriting a history in which they were ever committed.
Confirmed on git 2.43.0 with a fresh repo (.gitignore = f9, branch with 'add f9' + 'rm f9' + an unrelated commit, LOCALDATA in an ignored f9). Plain
git checkout otherreplaced it with the tracked content, rc=0.--no-overwrite-ignoreaborted with 'untracked working tree files would be overwritten', and LOCALDATA was kept.git rebase mainprinted 'Successfully rebased', rc=0, and f9 was gone afterwards. With f9 not ignored, the same rebase stopped at 'pick ... add f9' with 'would be overwritten by merge' and rescheduled the pick.