Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "autosquash"
-
Merge VS Rebase:
- Did you pick a side?
- Practical tips? Like dealing with merge conflicts
- Have you ever regretted using either?
My answer
* My team squash-merges all branches to master so we don't really care what the branch history looks like. Master history should be pretty - but a branch history can be ugly and filled with a dozen commits.
* Practical tip 1: use `git config rerere.enabled true`. rerere stands for "reuse recorded resolution" and this means if you rebase often you don't have to resolve the same merge conflict twice.
* Practical tip 2: use `git commit --fixup oldcommithash` and then rebase with `--autosquash`
* I like using Rebase. But I have regretted the amount of time I've spent on trying to rebase old branches with many commits only to give up and to `git rebase --abort` since I realised I couldn't handle trying to reapply all the commits chronogically as the changes in the 1st commit were no longer relevant.46 -
Got any git tips that everyone might not be aware of?
My tip is fixup and autosquash!
If I'm working in a branch with many commits and I notice that 5 commits ago I made a tiny mistake on commit 'abc123' then I'll just do `git commit --fixup abc123`.
It's similar to `--amend` but you can do it for any commit.
At first this would be a separate commit. But next time I wanna rebase I'd just do `git rebase -i --autosquash origin/master` and it'll be squashed into abc123
Some article that explains further details:
* https://gist.github.com/naviat/...
* https://blog.sebastian-daschner.com/...
After discovering I had been unaware of this for years I figure there must be other similar useful git things I might be unaware of2 -
And I thought I knew a lot about practical git... But today I learned about fixup commits and autosquash. Awesome!