1. Not a very good reason. Some projects might have slow CIs. Some projects might not have a CI at all. Some project's CI might not be checking everything (front end for example)..
2. Because people make mistakes. You might think you are only excluding a comment, but might be excluding something that is required by mistake.
When I really want to do your workflow, here is what I do. Add all the debugging print statements and commit them separately in another branch. When I want to include the debug statements, I just cherry-pick the commit with those things.
This way I remove the overhead of doing a staging before every damn commit and still retain the ability to pull in debugging changes whenever I want them.
>Without CI, how would you even know if your projects compiles on other platforms?
Not everything need to be cross platform! And not everything need CI..
This sounds more complicated overall. Also, I would still need the staging area to only commit the debug statements.
As I said, I like to work on several things in parallel and I don't want to switch branches back and forth. That's just my workflow for my own projects and apparently I'm not alone.
2. Why should comments or printf statements affect the build? When it compiles with them, why shouldn't it compile without them?
3. the commits might be temporary and get squashed anyway