Our great sponsors
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
ohmyzsh
🙃 A delightful community-driven (with 2,300+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub, docker, homebrew, node, php, python, etc), 140+ themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.
Relevant useful tool: diff2html - a CLI that lets you quickly see an HTML output of all uncommitted the changes you've made (or compare against a branch).
https://diff2html.xyz/
I have an alias `alias diff='diff2html -s side --ig package-lock.json'` which shows a side-by-side comparison of my changes. Highly recommend!
I think it very much depends how you use them. A great option to manage submodules is TwoSigma's "git-meta" https://github.com/twosigma/git-meta.
There's also just "meta" which is a cleaner way to approach the functionality of submodules https://github.com/mateodelnorte/meta.
But otherwise, I don't create branches. My commits are medium sized, one big thing, and to the trunk. After a commit, I git --amend liberally. It's never really clear in my mind when a commit ended and the next one starts. This wouldn't fly in a group.
The one think I'd recommend is roughly Never Type git. That's overstating, but basically git's command line syntax is just terrible. So I hide it behind shell aliases. I think my one moderate sized git screwup was due to the command line syntax. This guy goes a bit far but you get the idea:
https://github.com/ohmyzsh/ohmyzsh/wiki/Cheatsheet
I pull rarely enough that I prefer to type it out.
Also, configure a good diff tool (although Apple seems to reject kdiff3 for now). And .gitignore goes without saying.