I basically only use git merge like Theo from T3 stack. git rebase rewrites your commit history, so I feel there's too much risk to rewriting something you didn't intend to. With merge, every commit is a real state the code was in.
When "merging" in master/main before opening a pull request I always rebase any local commits I have, it does no harm but vastly reduces complexity of the commit tree - however, as soon as code from other branches enters the picture I merge