March 19, 2024
March 19, 2024
It was a typical work day, we had a little pair programming session, where I was trying to explain to my colleague some deployment processes. In the realm of remote work such sessions, reliant on screen sharing, are prone to hiccups. Connection might get unstable, so the video might lag a bit. It’s usually better when you take this into account, and try to explain things slowly, especially when you’re about to teach something. That time I totally forgot about this rule...
I launched like a rocket, I took every shortcut that I could, making my teammate totally confused. It was intelligible... What possibly can you understand from this?
gbD developgco your-feature-branchgcb developgpsupf
I quickly fixed my little mistake, but this made me realise I can share some git efficiency tips that I think many developers already have at the tips of their fingers. If you’re curious what does that mean ☝️, read on.
Before we begin, let’s put a little disclaimer right here. I use git via CLI. Chances are you might see that as a relict and use a GUI client. That’s ok and it doesn’t mean this article is not for you :)
While GUI apps are mature now and can offer some benefits over the CLI, I think it’s still beneficial to know how to write, rather than click stuff. Some pros of such approach:
And the list goes on...
Another heads-up: I use oh-my-zsh. For those who don’t know it - it’s the most popular framework for your zsh config management. It can bring a lot of fun features to your system shell, but let’s focus on the one in particular - git plugin.
Why this topic? Well, zsh
has been the default shell on macOS for several versions now (starting from Catalina) and many devs, myself included, adopt oh-my-zsh
right after seeing its cool customizable themes in action. If you peek into the default .zshrc config, you'll notice the git plugin is enabled by default, so most likely the whole setup is already there.
Alright! The plugin is really simple, it just adds a set of handy aliases and functions for git commands, so you don’t have to type the full long form, e.g. instead of writing git push
you can just write gp
, saving six precious keystrokes.
To give a better idea how does that look in action, here's a glimpse of some real world everyday commands and their abbreviated counterparts. Full list is available at plugin's page. I recommend going through it at some point if you haven’t yet, I’m sure you’ll discover something cool for yourself in there.
abbreviation | full command |
---|---|
ga filename.ext | git add filename.ext |
gaa | git add --all |
gco- | git checkout - |
gcb new-branch | git checkout -b new-branch |
gcp c0mm!t5ha | git cherry-pick c0mm!t5ha |
gc -m “some commit message” | git commit -v -m “some commit message” |
gcmsg “different command, same result” | git commit --message “different command, same result” |
gd | git diff |
gst | git status |
glola | git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset' --all |
gm branch | git merge branch |
gl | git pull |
gpsup | git push --set-upstream origin $(git_current_branch) |
grb some-branch | git rebase some-branch |
Notice, it’s perfectly fine to add some extra arguments after the aliased command.
I’m especially a fan of gpsup
. Typing this command usually means I just finished my current work and I'm ready to share it in PR up for the review. Very convenient!
The learning investment is basically nothing and whenever you find yourself unsure about some specific command there is always a handy way to check what it does:
type gc
gc is an alias for git commit -v
With some aliases you probably gotta ba a little more careful. I can’t say how many times I invoked Ghostscript by mistyping gs
instead of gst
… Other than that, I had 0 conflicts with it and such error is hardly catastrophic.
There you have it! GLHF with your new super powers!
If you liked this post, why don't you subscribe for more content? If you're as old-school as we are, you can just grab the RSS feed of this blog. Or enroll to the course described below!
Alternatively, if audio's more your thing why don't you subscribe to our podcast! We're still figuring out what it's going to be, but already quite a few episodes are waiting for you to check them out.