OK. Query.
Rebase or merge into current?
I personally never rebase. It always seems to have some problem. I’m surely there’s a place and time for rebasing but I’ve never seen it in action I guess.
Merge commits suck.
My biggest issue with GitHub is that it always squashes and merges. It’s really annoying as it not only takes away from commit history, but it also puts the fork out of sync with the main branch, and I’ll often realize this after having implemented another features, forcing me end up cherry picking just to fix it. Luckily LazyGit makes this process pretty painless, but still.
Seriously people, use FF-merge where you can.
Then again, if my feature branch has simply gone behind upstream, I usually pull and rebase. If you’ve got good commits, it’s a really simple process and saves me a lot of future headaches.
There’s obviously places not to use rebase(like when multiple people are working on a branch), but I consider it good practice to always rebase before merge. This way, we can always just FF-merge and avoid screwing with the Git history. We do this at my company and honestly, as long as you follow good practices, it should never really get too out of hand.
Sounds like I just gotta get better with rebasing. But generally I do my merges clean from local changes. I’ll commit and push, then merge in, push. Then keep working. Not too hard to track but I’ve found it’s the diff at MR time that people really pay attention to. So individual commits haven’t been too crucial.
I try to structure my commits in a way that minimizes their blast radius, which usually likes trying to reduce the number of files In touch per commit.
For example, my commit history would look like this:
- Add new method to service class
- Use new service class method in worker
And then as I continue working, all changes will be
git commit --fixuped to one of those two commit’s hashes depending on where they occur.And when it’s time to rebase in full, I can do a
git rebase master --interactive --autosquash.This is the way! Small commits with descriptive commit names, then just fixup into a few feature commits. Makes rebase a breeze.
What you do is create a third branch off master, cherry pick the commits from the feature branch, and merge in the third branch. So much easier.
That’s called rebasing
for some reason it’s easier than normal rebasing though
Have you tried interactive rebase (rebase -i)? I find it very useful
Yeah, but then you deal with merge conflicts
rerere is a lifesaver here.
(I’m also a fan of rebasing; but I also like to land commits that perform a logical and separable chunk of work, because I like history to have decent narrative flow.)
You can get merge conflicts in cherry picks too, it’s the same process.
The little median in the middle is the dev who helps them fix their branch over screenshare




