| > So after rebasing my local is A D E B C. No, your local is now A D E B' C'. Commits aren't just a diff between two tree snapshots, they are tree snapshots. Hopefully you test and sanity check C' before submitting for review, but it's very unlikely that you're going to give B' the same treatment, making it more difficult for people to understand the history in the future (as well as breaking `git bisect`). And even if you do, are your coworkers going to? Consistently? No CI tool that I'm aware of will enforce this for you. > There are no messy merge commits. No, but the underlying messy workflow is still there. You've just swept it under the rug for the sake of aesthetics, at the cost of future comprehension. > At no place in this process is there any dishonesty or lying. I haven't changed the history upstream, which is the source of truth. What's the issue here? Those are completely orthogonal concerns. You're presenting a false version of the repository state. The common mantra of "don't rewrite public history" is about not creating a mess of duplicate commits, it doesn't imply that rewriting history is fine as long as it's not public. |