Commits are snapshots not diffs (2020)
I think it&#x27;s a tragedy that just about every developer uses git but most learn add, commit, branch, and merge and then just stop learning.<p>A lot of people are scared of rebase and cherrypick and shut down or get defensive when you mention them or try to encourage their use.<p>The result is, because developers only have a hammer, they brute force merge everything which results in grotesque conflict resolutions and commit histories and makes it hard to untangle problems.<p>At a previous job, another developer was kind enough to walk through rebasing on the command line with vim. I was receptive and in about 10 minutes, I realized there was a significant set of standard features and day to day Git use I was previously just oblivious to.<p>These days, the UI for rebasing and cherry picking in Gitkraken is state of the art and effortless and I use them every day without hesitation and without the fear that comes from not understanding or knowing what I&#x27;m doing. Still, I constantly struggle with coworkers merging feature branches from 100 commits ago in to new feature branches and brute force resolving conflicts across half a dozen files in one commit without any context.<p>I see it all because I have visibility in to the history and branch relationships but I still get shrugs and eye rolls when I bring it up. I don&#x27;t necessarily want to dictate nitpicky git usage but I have a hard time accepting when people just to refuse how rebasing and cherrypicking work when they&#x27;re both core basic features of a tool we all use every day. Proper Git use is one of those hills I&#x27;ll die on, though so I don&#x27;t intend to shut up about it any time soon :)<p>Edit: My practical advice: If you use git every day and you don&#x27;t know how to rebase, reset, cherrypick, and stash from the command line, make it a goal. Then, once you&#x27;re comfortable, learn how to do it in a visual tool like Gitkraken and make an effort to incorporate them in to your daily workflow. My guess is things will become a lot less tedious and confusing when things get messy.