By Ronny Shani
Working with Git in the command line might make you feel like the quintessential movie hacker, but in reality, typing hard-to-memorize Git commands in the terminal just isn’t worth the effort.
Marco Gregorini, a Senior Software Engineer @Project A’s Tech team, suggests using the IDE for Git operations.
Marco works on Linux (Ubuntu) and uses JetBrains IntelliJ IDEA, leveraging its native support for version control. Most of his day-to-day work involves quickly jumping into new projects and getting comfortable with unfamiliar codebases, so he counts on features like autocomplete and keyboard shortcuts to be faster, more efficient, and achieve more with less.
Checkout the workflow
Here are typical Git commands he runs in the IDE rather than the Command line interface (CLI):
rebase— using the IDE is much more intuitive than the CLI, where you need to know the
merge— you get a nice UI of the
diffand can resolve merge conflicts automatically or manually. You can also implement the pull request review in IntelliJ and complete everything there.
push— using keyboard shortcuts.
cherry-pick— is sometimes needed to avoid code conflicts. I wouldn’t even know how to do that on the command line.
Rebase in 4, 3, 2, 1…
Marco likes keyboard shortcuts and spends time mastering, learning, and customizing them. Over the years, he’s configured his own collection, including a custom combo to
rebase a branch into
- Ctrl (opens the git branches view and switches to the previous branch you were on before, which is usually
- Alt P (to do a
- Alt W
Alternatively, he uses Alt F to
fetch, skipping steps 1–3 and just hitting
Alt F followed by Alt W.
Other frequent keyboard shortcuts he uses include:
- Alt Numpad-8 to annotate (when you feel like
- Alt Numpad-5 to compare with another branch.
- Ctrl Alt Numpad-5 to show the history of the current branch.
Get in the habit of Changelists
Furthermore, some things are almost impossible on the command line. “I was working with a portfolio company where I couldn’t directly access their libraries for security reasons. The solution was to manage versions using my IDE: I created two
changelists, letting IntelliJ track the changes to the working tree and handle the commits”.
Marco wouldn’t be able to do that otherwise because there’s no direct CLI equivalent to
changelists–IntelliJ’s replacement for Git’s Staging area is like
git stash on steroids allowing you to complete intricate tasks, like commit of specific lines.
“People are so used to the command line that they might think that using alternative methods is lazy, but it can also be a personal preference, a matter of taste. As I see it, brilliant people wrote this extension or feature, and I trust their decisions. For me, it opened a whole new world of convenience. It’s not an ideological choice; it’s about finding a better, easier way of doing things”.
See it in action
Want to try it yourself? Here are four screencasts featuring Marco’s common workflows, including his keyboard combos: