top | item 9504642

(no title)

Fenume | 10 years ago

Why would you rewrite history? Don't be ashamed.

discuss

order

allersj|10 years ago

For me, I tend to commit frequently, sort of like my obsession with constantly hitting CTRL-S while working in an IDE. Before I push my changes I like to squash the commits into more cohesive commits. If anything, I think it makes it easier on my colleagues for code review.

jordigh|10 years ago

I do the same in hg. I do `hg amend` all the time to keep adding changes to my commit. At the end I may selectively undo some changes with `hg uncommit --interactive` or `hg uncommit --all` and redo the whole thing piecemeal with `hg commit --interactive` in order to slowly split up my work into several commits. Evolve makes it really easy to keep (and ignore!) a meta-history of all of my editions, with a clear lineage of which new commit replaced which prior commit.

I may also rebase my work onto the latest head at the end (not to be confused with git HEAD).

And all of this with a very nice interface. It's always --interactive, not sometimes --patch and sometimes --interactive.

limeyx|10 years ago

Thats not the same kind of rewriting history because its local to you and hasn't yet been pushed out to others.

Git allows you to push commits to other people and then rewrite history, which is different

mpdehaan2|10 years ago

leni536|10 years ago

No it's not, it rewrites and destroys history. The problem it solves is "keeping the history clean", when actually it's not what you want. You don't see your history, you see logs and diffs. So you want to keep your logs and diffs clean. There should be an other solution to this other than simply removing/merging commits and eventually removing information with it.

dajobat|10 years ago

Some of the arguments against merging made in this article seem a little strange, for example saying "If folks on topic branches rebase, there will not be any conflicts on merge" after previously stating "It’s also a great idea to rebase periodically - several times a day", as there would also be no merge conflicts if the branch was merged in periodically as well. If merge commits are so abhorrent, just alias git log to git log --no-merges