I want clean history, but that really means (a) clean and (b) history.

People can (and probably should) rebase their private trees (their own work). That's a cleanup. But never other peoples code. That's a "destroy history"

So the history part is fairly easy. There's only one major rule, and one minor clarification:

  • You must never EVER destroy other peoples history. You must not rebase commits other people did.

[...]

If you are working with git together with other people, it's worth a read.

you are viewing a single comment's thread
view the rest of the comments
[–] [S] 4 points 1 year ago (1 child)

Commit separation that is useful for review will also be useful for history.

Also when using git bisect aka "The Alaskan Wolf Fence Method" on nasty bugs e.g. causing concurrency or UB issues.

It is also a potential downside of rebasing that it can (sometimes) invalidate interim tests.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 1 year ago

    Not really because I've never seen a setup that requires every commit in a branch to compile and pass tests. Only the merge commit needs to.

    Also if your PR is so big that it would be painful to bisect within it, then it should be broken into smaller PRs.

  • source
  • parent