DEV Community

Cover image for Do You Still Use Git in the Terminal?

Do You Still Use Git in the Terminal?

Jimmy McBride on September 14, 2024

I’ve been thinking a lot lately about how I use Git in my day-to-day work, and I’ve realized I still default to the terminal for just about everyth...
Collapse
 
leob profile image
leob

I use a GUI (VSCode) to view git history and diffs (including viewing/resolving merge conflicts), but command line for everything else (commit, push, fetch, merge etc) ... just a GUI for tasks which are easier to do via a GUI, and CLI for the rest :)

Collapse
 
moraym profile image
Moray Macdonald

Yeah VSCode is so good for resolving conflicts! The CLI is just SO much faster for everything else though.

Collapse
 
murd0c profile image
murd0c (he/him)

Just like this, I use the VSCode GUI mostly for merge conflicts and see the branch tree in a much clear way, and have it updated with remote pressing just one button.

For the rest I use the CLI, without any aliases because I like it rough (?)

Collapse
 
jimmymcbride profile image
Jimmy McBride

That side by side comparison is too nice to live without!

Collapse
 
anras573 profile image
Anders Bo Rasmussen

I do exactly the same!
I learned git via the CLI first, and I have tried using GUIs on multiple occasions, but I'm having a hard time figuring out exactly which commands it's going to run, so I prefer to write it myself 😅
But for git history, and diffs, I use GUIs.

Collapse
 
eljayadobe profile image
Eljay-Adobe

I use git on the command line 99% of the time.

For those hard to reach places via command line, I use either Atlassian Sourcetree or git's own gitk.

My former boss speaks very highly of SmartGit. I haven't tried it, though.

Both Xcode and Visual Studio have git integration, but I never use git from those IDEs.

I've heard from my colleagues that use VS Code that the git integration is excellent.

(I was looking forward to Cycligent Git Tool, but appears to have been abandoned years ago. Alas. It was the one Git GUI client I've found that really resonated with me.)

Collapse
 
incominglegend profile image
IncomingLegend • Edited

git in the CLI is slow, inefficient and clunky...
SmartGit is hands down the best crossplatform git GUI I've ever used, too bad they removed the free tier and now its completely payware...
Sourcetree is a bloated mess...
Stay away from Gitkraken, personally I don't trust any app that asks me to login, especially one for git client...
VScode used to have a very popular git extension, that is before it got bought by Gitkraken and now they constantly push you to buy premium or something...
SublimeMerge is a decent git client, could even be considered a good one if it didn't had that annoying popup to buy a license...
Gittyup is free and open source, it doesn't have the most modern UI and it has crashed a few times, but overall it gets the job done, I've been using it ever since I've had to switch from Smartgit...
there are other open source alternatives like Gitnuro which has a modern look but lacks functionality and its development is probably abandoned...
there's also GitButler, another open source with a modern interface that tries to update the workflow of git with virtual branches or something, and it also generates commit messages with AI, it seemed interesting but it feels like its in alpha and in the end I went back to Gittyup...

Collapse
 
jimmymcbride profile image
Jimmy McBride

I will say, I disagree with your first statement. It works much faster than any GUI for larger operations, and if you power yourself with aliases and functions like in my latest blog post you're really speeding up your workflow in the CLI.

Have you checked out LazyGit yet?

Thread Thread
 
incominglegend profile image
IncomingLegend

I haven't checked it out yet so I don't know what to say about that approach, in general I'm a bit shy of using the terminal so I just prefer clicking on stuff, also having the ability to see a side-by-side code diff is another personal preference

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

Side by sides are a very nice quality of life feature!

Tools where you can click around are nice, but they're just doing all the commands under the hood for you. So if you're doing some heavy lifting, since the GUI adds a layer of abstraction, certain big operations can take much longer 7-10 minutes in some cases vs 10 seconds or less in terminal. But hey, ain't nothing wrong with a little coffee break now and again!

If you're a little terminal shy, I'd recommend you to follow my channel here. I try and do my best to demystify the terminal and make it approachable for everyone :)

Collapse
 
godwinkachi profile image
Godwin 'Kachi

Is gitk available on Linux as a standalone app?

I've not heard of it before though, might want to try it out.

Collapse
 
pinotattari profile image
Riccardo Bernardini

Yes. Actually, it is the GUI tool that I use when the CLI is not enough

Collapse
 
jimmymcbride profile image
Jimmy McBride

I've been hearing lots of good things about LazyGit though!

Collapse
 
jimmymcbride profile image
Jimmy McBride

I've never heard of it being used on Linux, worth checking the package manager for your distro though!

Collapse
 
dmitry_messerman_5073be44 profile image
Dmitry Messerman

Yes

Collapse
 
tbroyer profile image
Thomas Broyer

I use a bit of many things:

  • blame in the IDE (but also sometimes on the command line)
  • gitk most of the times I want/need to look at the history, and git citool (from git-gui) to stage changes and commit
  • git mergetool with Meld to resolve conflicts
  • the command line for everything else (push, pull, rebase, stash, etc.), including using VIM to edit interactive rebase actions or reword commits
Collapse
 
danish profile image
Danish

I think it varies person to person.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Most def does! However, I've definitely seen some trends on this thread. I think the most common answer I've read so far is, "Yes, I use the terminal for most things but I use VSCode or Idea VCS to handles conflicts and diffs, since the GUI makes those more easily readable with the side by side comparisons"

Collapse
 
drazenbebic profile image
Drazen Bebic • Edited

I mostly use the GitHub Desktop app on Linux/Mac. The thing does have its limits though, so I do have to switch to the terminal every now and then.

I love the GitHub Integration. If my branch is related to a PR, I can see the status of the PR and know out of the desktop app if there's a problem with it or not.

Collapse
 
jimmymcbride profile image
Jimmy McBride

What editor do you use mostly?

Collapse
 
drazenbebic profile image
Drazen Bebic

I use JetBrains WebStorm mostly. I know they have an amazing Git / VCS integration, but I got used so much to the GitHub Desktop app. I've been playfully mocked by some of my colleagues for being probably the sole developer in our company who uses the Desktop app :D

But like I said - I simply got used to it.

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

We all fall into ways. I would encourage you to play around and learn Idea VCS. It's literally better than everything else. I think you'll find the swap easier than you think!

Thread Thread
 
drazenbebic profile image
Drazen Bebic

The only beef I have with GitHub Desktop is that I only can have one stash active in the UI. I'll try it out and see how it works! The good part is - I have used it to some extent already. I know that changing branches also kind of restores the branch's "workspace", which is a nice feature. This of course gets lost if you change the branch from an outside source.

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

One feature that's pretty nice is you can create different groups for your commits. So sometimes code bases suck and you need to have changes to make things work and not want to push them up. So you can create a group called "don't commit" and move in the files you don't want to commit. then you can have them seperate from all your other changes making it really easy not to accidently push changes you don't want to commit.

The merge conflict editor and diff tool are out of this work imo too. :)

Collapse
 
sheppy profile image
Sheppy

I use the git provided by VSCode and git graph to have a clear visual.

I'm the lazy person that do not like to remember git command and prioritize speed/ minimal steps or keystroke to achieve what I needed to, most of the time when I work with build-in git it's usually the case of me waiting for tasks to finish, instead of tasks waiting for me to finish typing.

I love the little time where I can squeeze in a little bit of stuff.

Collapse
 
fyliu profile image
fyliu • Edited

I use the command line, gitk, and lazygit for their respective strengths.

Lazygit can do things like move a commit back in history, which is just a little easier than command line interactive rebase. It can split up an old commit “in place”, which is also an interactive rebase which contains more steps. It can edit commit messages in old commits, which is helpful when you’re the maintainer of a code base with commit message standards. Basically, I use it to do commit cleanup before and after the pull requests. It’s very helpful for rebasing and conflict resolution too, where it shows you what commit you’re currently merging and which files are in conflict. And it allows you to view the conflicts and open an editor to work on that file. After you fix and save all the conflicts, it will continue merging the next commit until done.

Gitk is useful for its lazy graphical UI updating. When I press F5, it refreshes the branch and tag states but still keeps the old refs. So if I made a mistake in the current session, I can just hard rebase back to the previous history. Lazygit will prune the old refs from the view aggressively.

The command line is good for git status and quick commits, as well as times when you want to pass in —no-verify or other flags.

I used to use tig (git spelled backwards). It’s now replaced largely by lazygit except for the use of git blame. It can traverse history to find who really created the line, even after it’s been reformatted by other people. It’s not automated but the tool makes it easier.

Collapse
 
syedrakib profile image
Rakib Al Hasan • Edited

I moved away from the CLI and use GUI tools now.

I started off with SourceTree by Atlassian. It was great. But it was a super memory hogger and CPU hogger.

Then I found GitKraken. It was cross platform - supported in Windows, Mac, Linux. But somehow the UI didn't quite cut it for me # felt clunky and slow in rendering all UI components.

Then I found Fork and been madly loving it since 2019. Very feature rich. Does not hurt CPU/Memory. The UI feels snappy and it just works. Their team is also pushing out new features and bugfixes quite fast compared to other publishers. Only downside, is it is only supported in Windows & Mac. So if you're using Linux/Ubuntu, this is not for you. But i have been a super fan of it on MacOS ever since - and later learned that many of my colleagues switched to it as well after they saw me juggling with it.

The support for Git in VSCode works for some. But to me, using it feels more like a second-class citizen - an after thought experience - because it tries to fit itself within the UI framework of what was originally designed for VSCode. An advantage of it is that it's free. But if you have the licensing budget, go for a tool which is a first-class citizen and purpose-built specifically for the job of being a git UI.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I think Fork is the second favorite tool that's been suggested! (That I didn't know about before) This seems really cool. The first for me is LazyGit because I'm a terminal junky XD But I think I will be suggesting Fork to plenty of people moving forward :)

Collapse
 
ingosteinke profile image
Ingo Steinke, web developer • Edited

Tools or CLI? It doesn't matter that much in my opinion. The basic advantages and challenges stay the same (merge/rebase conflicts, unexpected "detached head" out of sync states), and why isn't anybody mentioning the elephant in the room? GitHub / GitLab or whatever central authoritative hub repository brings back many of the problems we had when using SVN, and why is GitHub so prone to time out over slow networks? They really introduce an unnecessary single point of failure to what was designed as a robust decentral successor to SVN.

Collapse
 
jimmymcbride profile image
Jimmy McBride

GitHub has quite a few problems. It's so trendy. I prefer GitLab personally.

Collapse
 
pinotattari profile image
Riccardo Bernardini

Most of the time I use the CLI: it is simple (once you learn it, but I did), fast, you can get old commands with Ctrl-R, and so on and so forth. I guess more or less everyone here knows the advantages of CLI.

I must also say that usually I do not feel the necessity of something graphical; however, every now and the the necessity arises (for example, to have an overview of the "history" of the current branch) and then I typically use gitk which is enough for my needs. Every now and then I tried other tools, but I do not feel the need to replace gitk.

Collapse
 
jimmymcbride profile image
Jimmy McBride

There are def some niche cases when a GUI is nice. I love those side by side comparisons!

Collapse
 
habutre profile image
Rogério Ramos • Edited

I have tried GUI like git tower and intellij plugin, but never get used to it. The git cli give me control and confidence about what I am doing, I have no clue how to manage a rebase -i using GUI

So I’m happier and more productive on command line

EDIT: typos everywhere 🤦‍♂️

Collapse
 
sreno77 profile image
Scott Reno

Yes and no... I used git inside of PhpStorm for work and in the CLI for my personal projects. It's easier to use in a GUI but forcing myself to do it manually sometimes ensures that I remember the commands and know how it works.

Collapse
 
jimmymcbride profile image
Jimmy McBride

IDEA VCS is 🔥 Big things are faster in terminal, but if you do those big operations with a GUI you can take a coffee break XD

Collapse
 
zachbryant profile image
Zach • Edited

Vscode works fine for git, but it kinda sucks. The only way it's tolerable is with gitlens. But lately I find that vscode's git UI is unbearably slow. Often it doesn't even update with changes until I click refresh. Git over terminal is the only true reliable way

Collapse
 
jimmymcbride profile image
Jimmy McBride

Try LazyGit! Looks cool :) Idea has the best vcs imo

Collapse
 
odalet profile image
odalet

I mainly code on windows and use a very specific workflow.
I always clone on the command line, but that's pretty much it.
I nearly always use TortoiseGit to commit and push.
And I use Fork (a wonderful gui for wi'dows and mac, but sadly not linux) for everything else.
I know it's kind of weird, but this is how I'm productive with git!

Collapse
 
masudalimrancasual profile image
Masud Al Imran

I think I am just so used to using GIT in the terminal that I almost unconsciously use it there. VSCode's Source Control tab has some nice and welcome feature, but as I said kinda got used to the terminal. Also, when working on remote servers you don't have the GUI option anyways. So, terminal is go to for me.

Collapse
 
mellen profile image
Matt Ellen-Tsivintzeli

I use magit, the emacs package, most of the time. One step up from the command line.

I do use the command line when there's nothing to edit.

Collapse
 
moopet profile image
Ben Sinclair

Still?

I never stopped!

I really struggle with GUIs. There are only a few applications where I've put in enough hours to find them comfortable.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I feel this way too. Even with databases. I learned the how to check/change things from CLI and everyone was like, "you should use this PSQL GUI". Then I open up the GUI and I'm like, "How do I do the things I already know how to do???" Lol

Collapse
 
docbok profile image
Mark David Robert McDonagh

For personal projects I generally use Git For Windows as it usually suits my needs. I only use terminals at work where we need specific flows/rebases and it's important that other developers see the flow they expect.

Collapse
 
thenickest profile image
TheNickest

I must admit it was a small bouquet I used, a combination of the terminal, vscode extension and GitHub Desktop. Some steps along the way just seemed more comfortable here and others there. However, for anything complex it was definitely the cli.

Collapse
 
reza profile image
Reza Majidi

I was using the terminal for a good amount of time but realized the GUI works better for me in most cases and the reason is I want to closely monitor my code and the changes that I've made and with GUI tools, there is better code readability. (diffs)

But for normal and common actions, I still use terminal and I guess this hybrid combination is the best way for me.

Collapse
 
jimmymcbride profile image
Jimmy McBride

This is the most common response for sure! I have a hybrid approach as well. As long as there's something to get a nice view of conflicts and diffs I'm set!

Collapse
 
sylvaingml profile image
Sylvain Gamel

Yes I do. Most of the time. Why?

I’m far to be an expert of Git command, and CLI is a nice way to improve and learn daily.

I use some text expansion macro to build branch names from bug id.
So it’s often faster for me to just type « gco -b ,/bug » and boom I get a new branch and can commit my fix.

I tend to work mostly between IntelliJ and VS Code. So I do not want to depend on a specific IDE integration.
I tend to also use Git Tortoise on Windows and Source Tree on my Mac. Just because I’m fine with them

There a lot of value to diversify the ways you use a tool. Don’t put yourself in silos.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Jetbrains is my favorite git GUI ever. They should honestly make their own stand alone git client and they'd crush the competition imo

Collapse
 
inthevortex profile image
Angsuman Ray

Totally agreed. They have the best set of predefined commands (until I came across Lazygit). The 3 way diff merge is the best and it was there from a time when no one was providing such an easy merge view. I old stopped using jetbrains because of the heavy resource usage on systems.

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

I've been wanting a git tool that does 3 collum conflicts like the other tools. Can't wait to try it!

Collapse
 
mudittiwari2000 profile image
Mudit Tiwari

gcb is even shorter for "gco -b" if you're using the git plugin for oh-my-zsh.

Collapse
 
jimmymcbride profile image
Jimmy McBride

oh-my-zsh is 🐐

Collapse
 
aleixvilaseca profile image
aleixvilaseca

In my case, the entire team uses gitkraken, except for me who still uses the terminal. I have Gitlens configured in VS code that belongs to gitkraken but I don't use it. I've always felt more comfortable working with commands through the terminal. I simply find it easier to understand and organize my ideas and actions. Many times, using applications with GUI I end up getting lost between options and tabs. It's a bummer for me

Collapse
 
wgdavies profile image
WG Davies

I think Git integration in GUI/IDEs is great and can even be handy for shortening the distance to good commits and playing nice with others. However, if you are in a position of doing any kind of build management, integrations, deployments, managing CI/CD, &c &c &c, having a really solid handle on Git is essential (assuming that's your VCS, of course!). That doesn't necessarily require the CLI, but keeping those manpages handy certainly does keep the options in mind for the inevitable code untangling that those disciplines regularly encounter! In my own experience, working with Git primarily or exclusively from the command line drastically shortens the distance to automated solutions and a faster pipeline!

Collapse
 
jimmymcbride profile image
Jimmy McBride

Yeah! When the IDE i'm using has a nice tool to compare conflicts and diffs that could be nice! But for all the other operations, I'm in the terminal. Thinking of checking out LazyGit for comparisons when I'm working in Neovim.

Collapse
 
manchuck profile image
Chuck Reeves

I've always used git in the terminal. I was burned a while ago with a desktop app that completely borked the repo. It destroyed the ref log, and all my work was gone. Because of that I stay in the terminal

Collapse
 
jimmymcbride profile image
Jimmy McBride

Wow! That'd keep me in the terminal too!

Collapse
 
karlkras profile image
Karl Krasnowsky • Edited

gitbash (on windows) or simply git cli on Linux or nothing!
IDE/OS agnostic.

Oh, well, not quite I guess. I'll use intellij's merge tools for performing merge conflict tasks and sometimes for diffing file versions, but for the most part the CLI.

Collapse
 
strandloper profile image
Steve Crane • Edited

I use the command line along with gitui a text-based UI that runs in my terminal. I use that for most simple things like staging, committing, pushing and viewing logs. It lets me save keystrokes without having to go with a full GUI client as I find them overwhelmingly complex. For more complex things like rebasing, cherry-picking, etc. I use the command line. I keep two Powershell windows open in my Windows Terminal, both targeting my repo folder. One has gitui running and the other for straight command line Git. I have POSHGit installed and that provides some assistance like tab completion.

Collapse
 
georgehossa profile image
Jorge Ossa

I use LazyGit in the terminal with LazyVim

Collapse
 
jimmymcbride profile image
Jimmy McBride

I love the LazyStack!

Collapse
 
j471n profile image
Jatin Sharma

VS Code UI generally, Sometimes I use terminal also cause it's fun. 😅

Collapse
 
canro91 profile image
Cesar Aguirre

Yes! "This is the way!"

Collapse
 
jimmymcbride profile image
Jimmy McBride

😎

Collapse
 
jperna7254 profile image
Jeremy Perna

I use the VS code git tab for things like controlling which file changes are included in a commit and adding a message to the commit. But i still use the terminal for switching between branches and creating branches and cherry picking commits and stashing changes and viewing the git history logs.

Collapse
 
somerussianguy profile image
Const

I use Fork. Because another big clients is just a trash on js ui frameworks. They use to many pc resourses

Collapse
 
jimmymcbride profile image
Jimmy McBride

Fork looks really cool!

Collapse
 
perisicnikola37 profile image
Nikola Perišić

I only use git in terminal

Collapse
 
samos123 profile image
Sam Stoelinga

Yes, I still use git in the terminal! It just makes me more confident to not mess things up.

The only thing I use VS Code for is resolving merge conflicts.

Collapse
 
databliss profile image
DataBliss

Git documentation is based on the terminal, so that’s what I use.

Collapse
 
coborski profile image
Catherine Oborski

Terminal! It's probably just because I haven't taken the time to properly learn them, but whenever I use a gui I always end up getting frustrated by some unexpected behavior.

Collapse
 
kochiyama profile image
Marcelo Haruo Kochiyama

I use Lazygit, is a TUI for git that enables me to use git without going out of nvim. It has a cool visual cherry pick that is nice.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Am about to add this to my Neovim flow :)

Collapse
 
markfriedman profile image
mark-friedman

I mostly use GitHub Desktop, and a little bit of Magit. I'm also interested in what the folks at GitButler are doing.

Collapse
 
jeremymoorecom profile image
Jeremy Moore

Cli for most commands. Sometimes I might use a GUI to view conflicts.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Same! 💯

Collapse
 
martinbaun profile image
Martin Baun

Being familiar with the terminal is a skill you will appreciate eventually.

Collapse
 
jimmymcbride profile image
Jimmy McBride

💯

Collapse
 
a_k_08eb8b7b3882e737eebf5 profile image
A K • Edited

Git Extensions is one love. Especially for repo and team review with kdiff3 and difftastic integration.
Unfortunately there is no version on Linux...

Collapse
 
jimmymcbride profile image
Jimmy McBride

😭 Looks like LazyGit is pretty 🔥 though!

Collapse
 
ananyapaw profile image
Ananya Paw 🐾

yep

Collapse
 
andorei profile image
Andrey_vdl

I always liked to use the terminal, there's an amount of dopamine gained for knowing the git subcommands and resolving all problems without the clicking in a GUI.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I agree! 💯

Collapse
 
aswzen profile image
Agus Sigit Wisnubroto

have been 7 years we are forced to use gitk.. since company is not allowing to install any additional "bloating software".. and its lightweight though

Collapse
 
jimmymcbride profile image
Jimmy McBride

Are they a Linux company? Or government?

Collapse
 
remejuan profile image
Reme Le Hane

It’s a mix, I use the UI for committing and diffs, but terminal for most everything else.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I think this is the most common answer for sure!

Collapse
 
steve_cooper_465bc357c90e profile image
Steve Cooper

I use VSCode for commits because I'm editing anyways. It's just a couple of extra mouse clicks.

I use the CLI for most everything else.

I do a bit of managing on the GitHub website.

Collapse
 
pwillard profile image
Pete Willard

Agree with others here. I still use GIT 99% from the command line even though I might occasionally allow VSCODE to manage my updates.

Collapse
 
kononenkoam profile image
Anton Kononenko

I use mostly terminal, and if I need to view branches/changes with it content I use gitk.

Probably one more case of using UI is git blame, this I run from IDE.

Collapse
 
workingwithaitools profile image
Bryce

Thanks. Git Kraken looks cool.

Collapse
 
bellini79 profile image
Giacomo Bellini

I've never used git from the command line, but I've also always worked in small teams of two/three developers and our repository has never been much more than a backup with benefits.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Yeah, on big projects when you do something crazy heavy once in a blue moon, the GUI can take several minutes where as the command line would do the same in several seconds. But hey, good excuse for a coffee break! ;)

Collapse
 
madhuri_kotla_5ae5d379dec profile image
madhuri kotla

I think Intellij is great, you don't need to type git commands, can use ui features for almost all commands,for example ctrl+k for commit, you can see text box for the commit message

Collapse
 
antoniodemax profile image
Anthony Peter

yes i normally use it in the vs code terminal

Collapse
 
kishonshrill profile image
KishonShrill

For me personally, using git in the terminal is a 100% better than using vscode, vscode offers only limited utilities than using git in the terminal.

And for those beginners who are reading this article, I highly recommend trying Git Exercises for those who are starting out.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Wow! Super cool resource! Will share this with my friends :)

Collapse
 
runecreed profile image
Runecreed

I use my IDE to handle git related stuff. intellij has a good integration with git log, rebase, commit, stash, revert etc.
No reason to bother with knowing commands by heart, I'm using hotkeys to switch and compare branches as needed.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Idea has best git GUI imo!

Collapse
 
goofyfoot profile image
William Rutkowski

on Windows I use GitHub Desktop app it is faster then what they embedded in VS Code.
Your commits and pushes transfer much faster and it has direct linking to Github, VS Code or File Explorer, at a click away.

I also still use Notepad++ when I am pondering something deep. I use the terminal to run the server and pass to Github thru the Desktop app.

Collapse
 
drazenbebic profile image
Drazen Bebic

FYI: GitHub Desktop works really well both on Linux and Mac! Personally, I have used it on Ubuntu because there is an easy-to-install .deb package available. For Mac you just download and install the .dmg file.

Collapse
 
goofyfoot profile image
William Rutkowski • Edited

I have Ubuntu-22.40.xx-LTS on here thru WSL and have had Notepad++ installed / added it to the variables beside nano.
That was awhile back when you could only embed Firefox for a browser. Plus jump thru hoops to configure a GUI and file system - explorer based root directory.

I have used it on Ubuntu because there is an easy-to-install .deb package available.

<
I will look for this package as I am getting back into MongoDB and like to use it for the web backend and node / express server stuff. As well as VS Codes terminal or Windows cmd. I was bottle feed on Windows 7 .... that was my first ever intro to a computer. I have only used Windows machines for coding and not developed anything on Mac or I O/S anything.

Back when Swift was just introduced I was learning Unity and Android / Gradle. Just because it was like $60 a month to get permission basicly to build for Mac - I O/S.
That is what I was told ... $60 a month to Publish your code and you need Pro version ANYTHING they make to develop or preview your code. That was 2015 - 2016~ish ....... way back then!!

Regardless if you were certified dev's or first semester. Google is $25 for a one time developers registration free to Play Store. Android Studio is free and has all build tools the way Visual Studio Community Edition does.

I am only focusing on browser - HTML - CSS - JavaScript as it is all you need to become cross-platform ready.
Learn Docker and enjoy writting code today. Instead of what you had to plow thru 10 years ago to get a page to mobile or desktop. What you don't have to do anymore, many people today have no clue. I got my first computer in 2012 and was playing with dev tools console by 2013.
What they had to work with was called bower and brocolli ..as package managers and basic version controlling. Gulp and Grunt were just introduced people still though Ruby was the only was out. And jQuery and PHP were NEEDED to get hired.

As Angular and React were designs stills and Gadspy and Webpack were being rolled out. NODE and npm were being built as well as bable for future es6 ... From a computer science eyeball the modern web landscape has evolved drasticlly. From 2000 with Push Notifactions and Paggers to the 2010 APP for that explosion. To say the least .........

I grew up when they just started allowing calculators in the class rooms for tests and finals. We had a bunch of "OLDSCHOOL" teachers that made you take out the batteries if you put it on the desk!! So I learned it is bested to focus on two ways to do something. In case one fails !!

Thread Thread
 
drazenbebic profile image
Drazen Bebic

Seems I lied a bit about the .deb package, sorry I misremembered it :D

There is a package feed you add, and then simply run apt install github-desktop. Here's the docs:

github.com/shiftkey/desktop?tab=re...

I have only used Windows machines for coding and not developed anything on Mac or I O/S anything.

Same here for a long time, but then the last two years I got a new job where they were strongly suggesting I take a MacBook because it will be easier. It's a great product and I enjoy it a lot. I can definitely see the appeal in it.

Then I also dual-booted Ubuntu on my existing Windows PC and that's where I do most of my work now when I work from home. You don't have to go all-in on the Linux-ness and build your own OS or try arch-linux (even though I want to do that too at some point). Ubuntu gives a great out-of-the-box experience and the last few years has been very stable and consistent in many aspects. I can't recommend it enough.

From a computer science eyeball the modern web landscape has evolved drasticlly. From 2000 with Push Notifactions and Paggers to the 2010 APP for that explosion. To say the least .........

I know what you mean about the industry changing rapidly. I've been a developer for over a decade now. I remember OC'ing my Pentium 2 processor from 200 to 300 MHz and frying it in the process. The first OS I used was Windows 3.1. Now I have a Watch on my wrist which is more powerful than my fried Pentium 2.

We had a bunch of "OLDSCHOOL" teachers that made you take out the batteries if you put it on the desk!!

They never let you do it the easy way. As someone who has trained a few developers I can see why that's important. You can of course complete the task faster, but you're missing out on the underlying mechanics of things.

Thread Thread
 
goofyfoot profile image
William Rutkowski

I was learning Drafting and Mechanical Drawing in 1978 from a teacher who was one of the draftsmen who layout the B-17s for Boeing in WWII .....

In 2013 -2014 I was using NERBS in RHINO design software and SketchUp & Blender as substitutudes for CAD and AutoDesk - AutoCAD .........

I have lived and loved in both analog and digital worlds and for all those who were born after Y2K. It was said to be the end of the world as we know it !!!

...... as 2020 and life after Trump have shown it just took 20 ++ years to take effect!! ..... Peace and enjoy the ride I was chasing the Web from 2013 till 2019.

I am glad I jumped onboard and went the route I did. I was told learn React for one year and half and thats all you needed or learn Wordpress & Bootstrapes.

I love to learn and enjoy the struggles it brings -- LIVING / GROWING from 1964 to 1999 and no internet and 4 to 6 weeks for delivery was spot-on!! We have been given a golden advantage over many today. And we Gen-X'ers are gone ..OH BOY !!

... most don't exert anything extra to anything. Social Status and a fake profile or brand and more income then your neighbors is the chase.

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

Rolling up your sleeves and getting dirty has so much value. Def a quality that seems to be loosing on the most recent generations. But I have hope things will start to turn around. :)

Thread Thread
 
goofyfoot profile image
William Rutkowski • Edited

the ones in charge have already figured it out ...... more like know that only 10% of the 5 million programmers they needed yearly are worth it.

I recommend this as a must watch and share as to anyone who wants a back ground in code today.
He rocks ..... if you can stand him !! ~:// https://www.youtube.com/watch?v=ecIWPzGEbFc&t=1508s

"Uncle" Bob Martin - "The Future of Programming"

With AI taking the basics out of the way, they now only need 5% of that 10% for IT and in house proprietary designs.

So pick your poison and become a computer programmer with a CS degree.

Or become a Web Developer - Designer and help create cool sh^t and a new genre in thinking and learning.

Got a cool idea myself and was told if you think like Tesla or Steve Jobs remember Big ideas have big failures in order to be worth a sh^t ...... Don't be afraid to fail as a way to grow

Thread Thread
 
goofyfoot profile image
William Rutkowski

also if anyone wanted to read Turing's explained paper. This is the PDF of Petzold's break down.
github.com/pengbo-learn/books/blob...

Collapse
 
steveblue profile image
Stephen Belovarich • Edited

Most of the time I spend with git is in a Terminal but diffing and staging mostly in the IDE. VS Code is great for merge conflicts too, but even with the good UX I feel like GUI haven't gotten it perfect yet and most commands can be issued in the Terminal. tig is a good upgrade for git in the Terminal too.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Yeah, merge conflicts and comparing digs can be really nice in a GUI. I think Jetbrains has the best GUI git integration ever imo. VS Code seems very solid too!

Collapse
 
inthevortex profile image
Angsuman Ray

If you don't want to leave the terminal, I would suggest trying the merge conflict resolution of Lazygit. I have started liking it but I still feel during complex merges the 3 way diff of jetbrains is unbeatable.

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

This is 10000% on my todo list!

Thread Thread
 
steveblue profile image
Stephen Belovarich

Lazygit and Tig seem to have some overlap, but it's possible Lazygit could be more intuitive. Giving it a look. Thank you!

Collapse
 
oaklandgit profile image
Larry Stone

I do. Even though I spend most of my time in VS Code, I eschew its terminal and git integration for a dedicated terminal (iTerm). I find it much faster to cmd-tab (I'm on a Mac) to switch to my terminal and issue commands.

Collapse
 
dtsnyder profile image
Drew Snyder • Edited

Control + ~ puts you directly into the VSC terminal when your current context is VSC. Bonus, Command + ~ switches between instances of the same application, these commands are very helpful when you have two or three instances of VSC open all with their own terminal.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Thanks for the short cuts! Super useful :)

Collapse
 
msamgan profile image
Mohammed Samgan Khan • Edited

I added this to by bashrc a long time ago. since then I have been using them generally. Might be useful....

function commit() {
    git add . && git commit -m "$1" && git push
}

function nbranch() {
    git checkout -b "$1" && git push --set-upstream origin "$1"
}

function opull() {
    git pull origin "$1" && git push
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
jimmymcbride profile image
Jimmy McBride

Love these! Bash functions are so great when doing stuff like that from the command line!

Collapse
 
eucaue profile image
Caue Souza

Yes, I basically just use Git in the terminal, and on some occasions, I use gitu tui.

To help me with Git in the terminal, I have some aliases, and I use meteor to help with commits! :)

Collapse
 
jimmymcbride profile image
Jimmy McBride

Wow, nice! I've been looking for some good terminal tools for git! XD I'm thinking about writing an intermediate to advance git blog, and I'd like to tie in a bash article after it showing off some fun Git things you can do. But I was wondering if people even do stuff in the terminal like that.

From all the responses on this post, it seems like it's a good idea to go ahead and write them up! Haha

Collapse
 
eucaue profile image
Caue Souza

Yeah, gitu is such a cool tool!
You should totally write that blog post, I’d love to check it out and learn more about Git!

A lot of people work with Git in the terminal, so I’m sure your tips would be super helpful. :)

Go for it! Can’t wait to see what you share. 😊

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

I'll have to check it out! 🙂

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️

GUI tools are like drawing things to communicate with other people: Great for when you don't share a common language, or to occasionally illustrate things that are just better understood visually than in text.

But when both parties speak the same language, aka. the git command line, then it is quicker and more effective to just use that as the main form of communication.

I almost exclusively use git from the command line, and when I need some graphic stuff, just opening github/gitlab/forgejo is usually more convenient than having a dedicated local tool for it.

Other than that, I have a vim script to diff a file against its committed version to easily see what I've changed, but that's about it.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I know Jetbrains has a super cool diff feature in there VC. Saved my butt at work a few times!

Collapse
 
kubernetic profile image
BC

Yes and no, but it depends.

I usually use git pull to pull a repo regardless of ide. I sometimes prefer doing commits in the terminal for multi-line commit messages, since VSCode limits my commit length otherwise.

I often use the GUI tools from VSCode for my Git usage, but at times find it helpful to use the cli, and in some cases that's all I have.

I want to setup LazyGit and use that, but haven't looked into it just yet. It looks like an interesting tool.

Collapse
 
timexpeachtree profile image
Timex Peachtree

LazyGit is awesome 💯, it gives you the option to use the git commands you never knew you wanted without having to memorize them commands and parameters.

For beginners it makes git lot easier and allows you to know what git commands it executed, has increased my knowledge of Git more than when I was using direct git command line only.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I plan on checking out LazyGit soon!

Collapse
 
jimmymcbride profile image
Jimmy McBride

I think having relatively short commits is best practice. But they still shouldn't force it down your throat

Collapse
 
davvolun profile image
Dav

That's funny, we were just taking about this. "Annotate" in VS on our "worst" file was minutes, for me about 7 minutes, to complete. Command line git blame was 10 seconds, maybe. Probably less. I don't know what VS is doing that took it so long with this admittedly desperately in need of refactor file, but something is off.

Collapse
 
jimmymcbride profile image
Jimmy McBride

That's always the trade off when relying on tools that abstract thing away.

Collapse
 
myjsalterego profile image
Aleksey Litvinov

Terminal is very flexible and customisable and suitable not only for git, but for many more things. For example, I use terminal for Git, Code search (find, grep).
GUIs are usually tailored for specific use case and might be limiting.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I agree! It can be nice for viewing difs and conflicts at times, but most of the time the terminal is fast and easy. Especially when you have your own alias and functions to help speed things up!

Collapse
 
myjsalterego profile image
Aleksey Litvinov

Exactly!

Collapse
 
ashishpshende profile image
Ashish Shende

I used to rely heavily on Git commands before switching to Visual Studio Code, except when working with Xcode. Now, I've fully transitioned to using the UI for most operations. The UI provides a clearer view, especially when resolving merge conflicts. However, I still prefer using Git commands for basic tasks. For example, I continue to use the git clone command to clone repositories, helping me stay familiar with Git commands.

Collapse
 
jimmymcbride profile image
Jimmy McBride

This is a super common approach. Conflicts and diffs it's so nice to have that side by side view! I've experienced and others as well, when dealing with a massive amount of changes, the GUI's can get pretty slow compared to the terminal. But for most basic operations, if it's build into the IDE, it's pretty convenient!

Collapse
 
natescode profile image
Nathan Hedglin

I almost always use the CLI. I have plenty of custom git aliases too.

Aliases help me squash, save, making features branches and even clean up my local branches that have been merged.

I use VIM bindings so my fingers rarely leave the keyboard anyways. A quick CTRL+SHIFT+T and git wip automatically saves my progress.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I love VIM :) Stared this gist. Will check out adding some of these to my list of aliases :)

Collapse
 
ypismerov profile image
Yuri Pismerov • Edited

I have always been amused with some of my teammates using VS Code to search for specific patterns in their code. Why not use grep -r in your cloned project? And I keep saying: “You guys tend to do simple things using least efficient methods”

Collapse
 
jimmymcbride profile image
Jimmy McBride

I'm a terminal junkie myself, but so many people are afraid of it! I try and write blog posts to help people become less afraid.

Collapse
 
prakhar_p_14 profile image
Prakhar Parikh

I usually use GIT from the IDEs itself like VSCode and PyCharm The most.

But when creating repos I use the terminal, dont know why? (Maybe I just love to copy paste the commands GitHub gives for the Initial Commit 🤣)

Collapse
 
jimmymcbride profile image
Jimmy McBride

There's just something really nice about being in the terminal. You don't need an excuse :)

Collapse
 
bmartin profile image
Ben Martin

I cannot live without magit/edamagit. I have not found anything nearly as good for creating nicely curated history. Staging chunk-by-chunk and effortlessly rebasing are magical.

edamagit vscode page

Collapse
 
jimmymcbride profile image
Jimmy McBride

Looks very cool! 😎

Collapse
 
olothatechie profile image
AntowanG-tech

I'm still a super novice but, my professor encourages us to learn git through the terminal. He also advocates for Linux and has us use the terminal for pretty much anything. I still have a lot to learn about git but, I enjoy using the command line so far.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Being comfortable with Linux and the command line will only bring you the best fruit! Seems like me and your professor would get along!

Collapse
 
dandylyons profile image
Daniel Lyons

I don’t think of git GUIs as a replacement. But they still have a valuable use case.

The git CLI has a ton of features and I don’t know of any GUI that supports every feature. But in my opinion git CLI has a bad UX that makes it easy to make very big mistakes.

For example git merge doesn’t tell you which branch you currently have checked out. You have to remember to check that yourself. And even if you check it, you don’t have a guarantee that another terminal window didn’t change it after you checked.

GUIs can tell you you’re currently checked out branch and auto update the value.

That’s just one of many examples of where a GUI can prevent you from making silly mistakes.

And anytime that you need to dip into something more advanced, you always have the option of using the command line.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Do you use zsh/oh-my-zsh? My terminal has the current branch next to my username a file path. Really handy!

Collapse
 
mangocat profile image
Mango Cat

Yes. Part of it for me is cross platform consistency. Command line git is the same for me in Linux, Windows and OS-X. Maybe there are also cross platform GUI git tools, but most GUI tools I have tried feel like I am wandering around lost trying to find the three command line operations I use all the time.

Also, when I need to do something unusual, the help on Google for command line is much more abundant, and correct, than GUI git wrapper guides. Then there's scripting...

Mostly I arrow up in the terminal to get the last time I used a command, then edit it if necessary. Tends to be quicker for me than GUI interfaces, even when they are integrated in my IDE. Having said that, when I add a set of new files through the IDE and it asks "add these new files to git?" I will, usually, say yes instead of doing the command line add.

Collapse
 
jimmymcbride profile image
Jimmy McBride

The terminal is universal :)

Collapse
 
jason_espin profile image
Jason Espin

Git in the Terminal day to day. If I need to do a complicated merge or feels lazy and want some auto-merge capabilities I use Fork. An amazing cross platform git GUI client that is free for evaluation and is developed by a husband and wife team. I've used Gitkraken in the past but given it was free then became a paid tool I dropped it quickly as I don't believe Git clients or tools should cost anything.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Very nice! I will have to check this out :)

Collapse
 
faisalkhan4k profile image
Mohammed Faisal Khan

I use git mostly on the command line.
This may be due to my lack of knowledge of other git commads.
I mostly use the commands such as clone, push, pull, branch, add, commit, stash.
To be honest till now in my learning phase i never had an instance where i required more than the above cmds.

Collapse
 
hungnguyenhuu profile image
hungnguyenhuu

Sure, don't want to depend on any GUI, tools. It makes me passive when moving out of other workspace or environment.

Collapse
 
mahendranv profile image
Mahendran • Edited

I prefer to use both terminal and GUI. The usecase defines the tool. Basically for any preview related usecase, I resort to UI.

Before commit, I review the changes in Sublime Merge. And remove the debug logs using unstage line feature.

For viewing file history along with preview, Sublime Merge serves the purpose.

For all the other cases, I'd use terminal and use in combination with scripts or git aliases.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Sublime was my first editor :)

Collapse
 
dk189 profile image
Henry Tran

Well, i think GUI or CLI are both good, the important thing is that we know how to take advantage of the benefits that both of these methods bring. GUI is not only easy to access for beginners but also extremely convenient to replace simple use cases. Not only that, but when interacting with a lot of information, using GUI also helps simplify the process and limit the risk that can occur due to typing mistakes. Meanwhile, CLI can be used almost anywhere, easily included in automation processes, and provides advanced power without the limitations of GUI managers.

Advice for beginners: Choose to use convenient GUI tools that log syntax, every time you perform operations on the interface, follow the log to grasp the CLI commands, you will gradually understand more deeply how this tool works, as well as improve your git CLI skills.

Collapse
 
godwinkachi profile image
Godwin 'Kachi

For sometime now, I seem to have stopped using git in terminal since the introduction of no support for password authentication in Git.

SSH is a thing for me though but since VS Code comes shipped with tunnelling, it kinda make the workflow simplified for me hence my reason of not being worried for too much about my non usage of git in the terminal.

Albeit, I'd love to explore other options mentioned in this post, thanks for sharing .

Collapse
 
ddfridley profile image
David

I maintain an open source project (github.com/enciv) I use git on the command line 100% of the time because it's too hard to explain to new devs how to do things with a gui. Part of making open source work is having documentation the makes it easy to get started and contribute. Documenting guis is hard to do and hard to follow. Also, after your fingers know the commands it's way faster than doing it through a gui. But I do use VSC and a plugin for doing different between branches.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I agree with this. Anytime I help someone with, the terminal is universal!

Collapse
 
matheusmcz profile image
Matheus Vieira do Nascimento

I'm currently using git through VSCODE with Git Graph, most of my commits are made through the VSCODE Git tab, but I always push or pull through the terminal, however 100% of the times When I need to merge two branches I use the hit graph, especially when I want to get a specific commit, it is much less work . I don't see a problem in using GUIs, I just don't recommend it when the person is learning git, to learn and understand in my opinion it should be through Terminal

Collapse
 
jimmymcbride profile image
Jimmy McBride

I agree with this! 💯

Collapse
 
cptcrunchy profile image
Jason Gutierrez

So ive been a GitKraken user and advocate for the last 6 years. I can hanlde myself on the occassions i have to use the CLI, but IMO outside of basic git commands, GUI igenerally provides a better experience. Ive seen first hand that jr devs have limited understanding of the git commands. They know enough to scrape by (push, fetch, stash, commit, new branch), but tney have had an existential crisis when asked to cherry pick, resolvr merge conflicts, view diffs, view commit history, rebase, revert a commit. I think having the jr devs focus their time and effort on solving bugs, tickets, and adding features is better than looking down on them because you are a Git CLI "purist" and they need to memorize git commands.
If you have an arguement of having to do some git gymnastics through ssh on an AWS EC2 instance, then i would argue you could have mitigated that "locally" to spare the headache on a remote vm.

Also, im a visual learner and having the GUI pefrorm my git task and even showing me the commands i would have used in the terminal has made me have a much deepet understanding and appreciation of the git cli.

Sorry for the rant!!! Much love to all devs honestly.

Collapse
 
jimmymcbride profile image
Jimmy McBride

There's nothing wrong with that! Git can tie you up sometimes!

Collapse
 
wrp profile image
William Pursell

I don't quite understand the phrase "switched to using a tool". A shell running in a terminal is a tool. In many cases, and at least 90% of the time with git, it is the best tool. Use the tool that works best for you.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I don't mean that the terminal is or isn't a tool. If git is installed on a unix-like system, then the terminal is the default way to interact with it. People build GUI tools to make the process simpler and more visual. That's what I mean.

Collapse
 
ksolomon profile image
Keith Solomon

Most of the day-to-day stuff is done via the source control view in VSCode. Context switches KILL me, and since I live in VSCode, it’s just so easy. For more esoteric things (figuring out how a junior broke their repo, etc) I’ll drop to the terminal.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I'm a father of 3 young daughters. I know what you mean about the context switching XD

Collapse
 
rawsp33d profile image
Ross Hadden

In addition to git I also use the TUI tool tig with a bunch of mappings.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I've heard good things about tig!

Collapse
 
markbojesen profile image
Mark Bojesen

I used git everyday through IntelliJ for 6 years... Then it suddenly struck me, I didn't actually know how git works and I was fairly lost in the terminal apart from the very basic add and commit. I decided to read GitPro (great book) and then forced myself to learn how things work under the hood, and therefore, use git in the terminal. It's been such a pleasure working with since.

Collapse
 
jimmymcbride profile image
Jimmy McBride

What an awesome story! I love that. What a great way to stick it through 😎

Collapse
 
malockin profile image
Nicola Mazbar

I use the CLI most of the time. In my opinion, CLI skills are transferable - it doesn't matter which job you have, what code you're writing, or even which OS you're using, the commands are the same. But GUIs may have slightly different methods of doing things, and may not be available everywhere.

There are use cases where a GUI is preferable, and I do use it sometimes (e.g. 3-way merges, log visualization). But I don't see it as essential to my work.

With that said - use whatever tool you're comfortable with, and don't overthink it ;-)

Collapse
 
jimmymcbride profile image
Jimmy McBride

I agree 💯 %

Collapse
 
timexpeachtree profile image
Timex Peachtree

Now I use the awesome LazyGit for accessing git from command-line, works like a charm. (Best for Cross-platform development too👌🏽)

While doing .net based development for apps I use Visual Studio built in Git client.

Also I use Notepad++ built in Git client for browsing source tree when need a particular change history.

Earlier used Git command-line but after Lazy git got lazy.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Been hearing so many good things about LazyGit! I'm going to have to check it out 🙂

Collapse
 
vaibhavbshete profile image
vaibhavbshete

I use a combination. Whenever I want to just unstage and I am not sure of the command I am thinking of is going to simply unstage or just destroy all my uncommitted changes, I find the clearly labeled 'unstage' button useful. Otherwise, for fetch, rebase, branch, switch, pull, push, stash etc everything on the terminal.
Yeah, so roughly, terminal for going forward and gui for going backward.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I like that approach! I think most people have a fragmented approach, including myself :)

Collapse
 
inthevortex profile image
Angsuman Ray

I've been using Git mostly from the terminal, most of the time. When I was using windows, I used to use a tool called Fork, very neat UI and at that time VS code internal git was quite bad. But then I kept going back to the terminal, I've now settled on Lazygit, it's a TUI, so no more extra heavy application running that goggles resources, very powerful and precise, has a lot of functionality and makes tedious commands easier like moving a commit 2 places ahead because improper rebase created a merge commit, or things like updating an old commit with extra code easily with 2 key combination, etc. After finding this, I've been using it for more than a year now.

Collapse
 
paul_tregoing profile image
Paul Tregoing • Edited

I let my IDE do the very basic stuff these days. The cli is for heavy lifting though. You can really ruin your day with a slightly bodged git command…. (and then you’ll be fixing it manually with git’s reflog anyway).

Collapse
 
jimmymcbride profile image
Jimmy McBride

You bring up a good point!

Collapse
 
vjnvisakh profile image
Visakh Vijayan

switch to warp. A terminal that has AI inbuilt

Collapse
 
michaelfich profile image
Michael Fich

Ya I'm still primarily using the terminal but I also use Git Tower for browsing specific commit diffs

Collapse
 
jimmymcbride profile image
Jimmy McBride

Having a GUI to deal with diff's and merge conflicts can be really helpful. By far the most handy feature from GUI's. I also think that GUI's can be nice if you need to organize your changes into multiple commits.

Collapse
 
michaelfich profile image
Michael Fich

I really enjoy the merge conflict interface right in vs code personally

Collapse
 
xmgr profile image
Marius Gerum-Richter

I use git from the terminal and when I'm coding (PhpStorm, PyCharm, Visual Studio) I use the built-in VCS tools, but installing a dedicated application just for doing git stuff just feels wrong for me :)

Collapse
 
jimmymcbride profile image
Jimmy McBride

No one beats Idea version control GUI imo! ❤️

Collapse
 
manatee_lookalike profile image
David Russell

I started out with a GIT GUI but struggled! Then I flipped over to Terminal and never looked back. It was faster to learn the concepts initially by having direct control. But I do understand why people would prefer the GUI environment!

Collapse
 
jimmymcbride profile image
Jimmy McBride

Anytime I can use the terminal, I default to it!

Collapse
 
jamesharr profile image
James Harr

A vast majority of the time I will use the CLI. It's where I first learned git, so I think I have a natural affinity to it.

If I'm using a UI:

  • lazygit for making commits, it has a pretty good UI for showing diffs and staging files/chunks/lines
  • lazygit for reordering commits, fixups, rewording
  • vscode if I'm making a quick code change from a browser
  • vscode sometimes when resolving a merge conflict (usually during a rebase), though I still the CLI to continue/abort the rebase

Honorable mention: tig. It's a git tui, probably more terse than lazygit, but it introduced me to staging lines and chunks. I wound up using lazygit because it's easier to teach to other team members and simple commit reordering and fixups are really nice in lazygit.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I'm going to check out LazyGit very soon!

Collapse
 
bias profile image
Tobias Nickel

yes i also still i do git on terminal. i use small alias for a log with graph and oneline.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Love writing aliases and functions to speed up my workflow!

Collapse
 
nabal profile image
Arnaud J.

It depends on what i wanna do.
Simple basic stuff can be easily found in IDE integrations so when i'm satisfied with how the IDE presents the feature, I may use it.

For more specific commands or settings (git log -S, git config, etc.) it's not negotiable: terminal4tw.

I'm using free version of "Fork" as GUI for 3-4 years now and i have to say that i really like the view of the tree, specific actions are quite easy to find, diff-tool is also great.
I'm really considering taking a completely optional licence to thank the dev.

I find the JetBrains product integration frightening: i'm quite lost in it when i give it a try sometimes 😅.

VS Code's seems the same to me: too many things hidden or not well placed that it lets a meeeh feeling. I'm sure a lot of people have come to master those integrations but i switch back every time to terminal when using those IDEs. 👍

Collapse
 
jimmymcbride profile image
Jimmy McBride

Jetbrains is my favorite! Once you get it, it's super easy and all kinds of cool features :)

Collapse
 
hardyweb profile image
hardyweb

still use git in terminal even though so many tools out here like lazygit, gitkraken, vscode buildin git integration.

Collapse
 
chipneedham profile image
Chip Needham

I used to have the same viewpoint as you but the intellij/phpstorm git gui has really been an awesome example of how great they can be when designed right. With Ai commit messages, I'm actually adding some really helpful info for myself and other team members without a thought. Historically my commit messages have been trash.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Idea should turn their source control into it's own stand alone program. It's the best in my opinion. I use it for work all the time for conflicts and diffs. The diff tool is so powerful. Will be trying LazyGit for my personal work

Collapse
 
asgs profile image
A S Gowri Sankar

I think I am in a similar situation. I can't let any GUI take control with the fear and anxiety that it may end up doing something I didn't intend to. Plus, git commands are simple and straightforward for the most part. The responses and error messages are clear enough

Collapse
 
jimmymcbride profile image
Jimmy McBride

I feel you! I think most people fear the inverse of making a mistake in the terminal and not being able to or knowing how to walk it back, so they rely on the version control GUI's to help them handle it.

Collapse
 
erknuepp profile image
erknuepp

I am a QA engineer and mostly only touch my test code so I just use the built-in visual studio GUI, but if I am doing personal work and deploying code I use the terminal.

Collapse
 
t3st3ro profile image
Tooster • Edited

Basically yes, but I also use lazygit. It has undo.

Collapse
 
dtsnyder profile image
Drew Snyder

I use both with similar frequency and often in combination. For instance, I'll start an interactive rebase in the terminal then use the GitLens GUI to pick, squash and move commits around.

Git is such a pervasive tool in our IDEs these days that even a command line purest can't ignore the benefits of GUI elements like inline git blame.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I agree with this! There some features that just work better in a GUI

Collapse
 
ibrow profile image
Isaac Brown

I use Sourcetree for simple commits, visualizing the history, and launching bash; the issue is that it doesn't support some common parts of my workflow.
Libgit2 is used by nearly all git GUIs and it doesn't support moving the core worktree at all, which is mandatory for one of my use cases to the point you can't even use a GUI to commit. I also add other worktrees to compare old versions of binaries in proprietary editors and that process is not in most GUIs either.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Terminal is old faithful! Have you looked at LazyGit? Been hearing lots of good things!

Collapse
 
russellbateman profile image
Russell Bateman

I still use git at the command line even though I develop using IntelliJ IDEA. Alas, it's hard break from what works.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Idea is phenomenal at merge conflicts and comparing diff's :)

Collapse
 
russellbateman profile image
Russell Bateman

Yes. I do take advantage of what's better as GUI that way although, for a quick diff, I'm still at the command line.

Thread Thread
 
jimmymcbride profile image
Jimmy McBride

Love it!

Collapse
 
forivall profile image
Emily Marigold Klassen

Yes, and I'm building my own terminal interface to git, which is currently a prototype in my dotfiles. The only things I use a UI for is resolving merge commits and exploring history with blame.

Collapse
 
forivall profile image
Emily Marigold Klassen

Also, I use git-revise and git-interactive-rebase-editor as some really handy commit reordering / slicing / cleaning tools.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I'll have to check these out!

Collapse
 
jimmymcbride profile image
Jimmy McBride

I love it when I see people build their own tools! Keep working on it! 🔥

Collapse
 
richardnpaul profile image
Richard

Yes, still 100% cmd line usage just like I'm still 100% manual docker commands because I like to know exactly what is happening and what I'm doing without abstraction and potentially unwittingly performing actions to some hidden GUI defaults (at least I can look through the man pages for the defaults for a command).
I've already done the GUI to cmd move being an ex-Windows to a Linux/Unix professional so I have a certain perspective when it comes to GUI vs cmd.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I only do Docker from command line. I'm in love with Dockers networking capabilities.

Collapse
 
saqib_abbas_8d1b9da205a09 profile image
saqib abbas • Edited

I’m the same way—I still prefer the terminal for Git commands! There's something about the control and direct feedback that keeps me hooked. I’ve tried GUIs like GitKraken and SourceTree, but I always come back to the terminal. That said, VS Code’s Git integration is handy for quick visual checks. What about you?

Collapse
 
jimmymcbride profile image
Jimmy McBride

Jetbrains and Neovim are my favorite IDE's. I love checking conflicts and diffs in Jetbrains IDE.

There's a feature to create different groups for staged changes in the commit tab that's been wildly useful at work when I want to make sure I don't accidentally push up changes I don't want to. Terminal for everything else :)

Collapse
 
cavo789 profile image
Christophe Avonture

Terminal... And because i'm using zsh and auto-complete, I can reuse easily my history so by just type a very few letters, hop I retrieve my previous commands.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Zsh is my favorite shell!

Collapse
 
kernelpanik profile image
Joseph Redman

Unless I am using windows which I rarely do anymore, I would use the website, but on linux I just use git as it just seems easier that way, but I am migrating from the site.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Linux is life! No windows for me. Work forces me to use a Mac because I'm a mobile engineer and Apple is evil. I think I like Microsoft more than Apple, but that's not saying a lot

Collapse
 
akindejihill profile image
Akindejihill

I only know the basics of git and I only need the terminal for what I've done so far. I think as I grow I'll probably continue to use the terminal for everything that I am able to.

Collapse
 
jimmymcbride profile image
Jimmy McBride

This is, in my opinion, the best way to start!

Collapse
 
josgraha profile image
Joe Graham

Unpopular opinion: CLI proficiency isn't getting set in your ways, it's how you level up 😁

Collapse
 
jimmymcbride profile image
Jimmy McBride

💯❤️

Collapse
 
plutonium239 profile image
plutonium239

Lazygit in the terminal, sublime merge otherwise.
Merge has saved me so much time!

Collapse
 
joseph_cartagenas_ac37b90 profile image
Joseph Cartagenas

Im using Github desktop

Collapse
 
dinbtechit profile image
Dinesh

Jetbrains inbuilt git tool.

Collapse
 
jimmymcbride profile image
Jimmy McBride

My favorite!

Collapse
 
cuznerdexter profile image
cuznerdexter

100% git in terminal all the time. I always want complete control over the commands. I do not like 'black boxes' that hide the control from me.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Yeah! Better to build a good understanding from the start! Black boxes can bite you

Collapse
 
carl_verbiest_7f50a957236 profile image
Carl Verbiest

I use command line and git-fork.com. Among other features Fork is great at visualizing merge conflicts

Collapse
 
jimmymcbride profile image
Jimmy McBride

Wow! Looks really cool. Love the UI

Collapse
 
slimgee profile image
Given Ncube

I think we just to use the terminal.

Collapse
 
mikebabcock profile image
Michael Babcock

I only use it from the command line personally. I can't stand the GUI interfaces.

Collapse
 
evanskaufman profile image
Evan K

I use the command line most of the time, as UI tools like those in Github and VS Code are useful in some cases...but they oversimplify in too many cases

Collapse
 
jimmymcbride profile image
Jimmy McBride

Being able to see a side by side is OP!

Collapse
 
twesped profile image
Tom Pedersen

Yes 99% of the time

Collapse
 
morficus profile image
Maurice Williams

I left the CLI and have been using GitKraken for years. I still fall back to the CLI maybe 1% of the time if I need to do something more advanced (like bisecting or anything with the ref log)

Collapse
 
jimmymcbride profile image
Jimmy McBride

My good friend loves GitKraken!

Collapse
 
goodevilgenius profile image
Dan Jones

Terminal is faster. And for any complicated rewriting of history, it's the only way to do it well.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Terminal is 👑

Collapse
 
piero_savastano_5a2a7c7aa profile image
Piero Savastano

I still git in the command line, feels easier than clicking around.

But maybe you are right that is just the power of habits

Collapse
 
jimmymcbride profile image
Jimmy McBride

I love the command line. The more you keep you hands on the keyboard, the better imo!

Collapse
 
kav128 profile image
Artem Krylov

I use JetBrains IDEs built-in git client for pulling, pushing, committing, switching branches. For more complicated things I prefer Git Extensions

Collapse
 
jimmymcbride profile image
Jimmy McBride

Jetbrains version control tool is on steroids!

Collapse
 
0xarnav profile image
Arnav

I always use the terminal for initialization and first commits, after that I use VS Code's source control sidebar.

Collapse
 
jimmymcbride profile image
Jimmy McBride

GUI's make certain aspects better for sure!

Collapse
 
musafci profile image
Md Abu Musa

Using **Sourcetree **for more than two years and as usual via the command line also.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Hybrid is probably the most effective approach. Having a good display for conflicts and diff's is really nice!

Collapse
 
ortonomy profile image
🅖🅡🅔🅖🅞🅡🅨 🅞🅡🅣🅞🅝

Git GUIs are pointless. CLIs only

Collapse
 
jimmymcbride profile image
Jimmy McBride

Now that's what I'm talking about! 💪

Collapse
 
jagedn profile image
Jorge

of course

Collapse
 
hadi_shahpuri_de6547bc295 profile image
Hadi Shahpuri

I use lazygit and it's custom commands. It's simply amazing 😍

Collapse
 
jimmymcbride profile image
Jimmy McBride

Can't wait to try it soooon!! :D

Collapse
 
clive_tanaka_03aaa2e3ee2d profile image
Clive Tanaka

yeah for me i have had the best experience with git using the terminal

Collapse
 
xlexip profile image
Lexip

GitKraken

Collapse
 
jimmymcbride profile image
Jimmy McBride

My best friend loves GitKraken!

Collapse
 
pat6339 profile image
Patrick Odhiambo

Yes I do, and I like it. However, I have also used the VS Code integration and will use any other as long as I achieve the goal am after in the most efficient way.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Seems like a fragmented approach is the most useful for the majority of people I'm seeing in my comments!

Collapse
 
bassemaed profile image
Bassem Saleh

I use git from the command line most of the time. I only use a GUI during resolving rebase (merge) issues. For that, I use p4merge

Collapse
 
jimmymcbride profile image
Jimmy McBride

Conflicts and merges are very nice in a GUI :)

Collapse
 
harshit053 profile image
harshit053

I always use git in command line. I feel like if i know how to use git in CLI i will always be able to use git irrespective of which IDE i am forced to use.

Collapse
 
jimmymcbride profile image
Jimmy McBride

This is very true!

Collapse
 
shinigami_mukund_377460e1 profile image
shinigami mukund

I I use GitHub desktop

Collapse
 
thegadget_techie_73f5b89c profile image
thegadget techie

Cli baby . Only way to go

Collapse
 
jimmymcbride profile image
Jimmy McBride

Collapse
 
layman806 profile image
Bavani Sankar A B

I use JetBrains' tool only to review changes, but stash, pop, commit, push, pull, rebase, create new branches, fork, cherry pick, tig, all on the terminal.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I think looking at conflicts and diffs is really where the GUI shines. Jetbrains GUI is very polished on those things. I love using it when I'm not swimming around in Neovim! Haha

Collapse
 
armando_ota_c7226077d1236 profile image
Armando Ota

almost ...

Collapse
 
shanu-kumawat profile image
Shanu Kumawat

Terminal is the way to go for me

Collapse
 
hmadrigal profile image
hmadrigal

I tend to use BOTH. For example for some matters such as rebasing with or without interactive. I normally start it in the CLI, if there are conflicts I might resolve then in a IDE.

Collapse
 
jimmymcbride profile image
Jimmy McBride

When you're working in an IDE that has good version control, doing certain things with that GUI really helps speed up conflicts and looking at diffs!

Collapse
 
koga73 profile image
AJ

I use GitKraken 98% of the time. It's great

Collapse
 
jimmymcbride profile image
Jimmy McBride

I have a good friend who loves GitKraken :)

Collapse
 
akhilesh_kotwal_3d4fbd33c profile image
Akhilesh Kotwal

Github Desktop - Clean and easy to use interface - Rebasing Cherry picking, Comparing branches, History, Everything is perfect for me,

Collapse
 
jimmymcbride profile image
Jimmy McBride

My experience with GitHub desktop wasn't that great but I know others who swear by it. :)

Collapse
 
brense profile image
Rense Bakker

I used to use GUIs for git, but at some point decided to learn how git actually works and now I just use it in the terminal. Much safer imho when you know what you're actually doing.

Collapse
 
jamesjf7 profile image
James Jeremy Foong

have you tried oh my zsh? I switched from Bash several months ago,
It's got some sweet Git shortcuts built in. It might be a nice middle ground if you're not ready to go full GUI.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Oh yeah! Oh my zsh is great! Love it :)

Collapse
 
harrywilson profile image
Harry Wilson

yeah sometimes.

Collapse
 
joshua_whitney_b3891822a5 profile image
Joshua Whitney

Everyday. It "just works". And that's enough for me.

Collapse
 
jimmymcbride profile image
Jimmy McBride

You're a much luckier man than I! XD

Collapse
 
peter_lamb_fa3fc2089b698c profile image
Peter Lamb

My colleagues all use UIs for Git. I use terminal 100%. The UIs are buggy as Hell and have caused major issues. The terminal never does that.

Collapse
 
jimmymcbride profile image
Jimmy McBride

The terminal is old faithful!

Collapse
 
jeremy_davis_a4acb46fded7 profile image
Jeremy Davis

Only ever use git in a shell. I spend 70% of my time in the CLI anyway, so nothing else really makes sense.

Collapse
 
joseph_anthony_794789c8b2 profile image
Joseph Anthony • Edited

Yes, command line. I don't even use a GUI, but screen on a terminal.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Love it!

Collapse
 
battyus profile image
Rafael

I use SmartGit for a few years now.

It used to have an evaluation (free) version, but not anymore. Even though it costs money I stayed with it, which I believe speaks volumes about it.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Yeah! I would say so. My buddy pays for git Kracken. Once you find a tool you love to use, I think paying for it is a great way to support the developers! ❤️

Collapse
 
anhoppe profile image
Andreas Hoppe

Yes, I switched. Used terminal for years and liked it. But I like the overview on branches and tags I have in the client. I feel it as a slightly improved usability

Collapse
 
jimmymcbride profile image
Jimmy McBride

I agree with this!

Collapse
 
kevin_man_776b4ba2 profile image
Kevin Mandeville • Edited

I use git command line for most things except for commits and for merge conflict resolution. For that I use the git interface in Intellij

Collapse
 
jimmymcbride profile image
Jimmy McBride

Yeah, I think those situations is there the GUI shines best!

Collapse
 
daverussellaspire profile image
Dave Russell • Edited

VSCode Merge tool then terminal for everything else. Though as I am 'the developer team' I rarely have more than one feature branch, which I avoid if I possibly can.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Well that both makes things easier and more difficult! 😅 On one hand, you don't have to ask questions about conflicts! 🤪

Collapse
 
ankitce profile image
Ankit

Yes, for the regular git operations I still prefer command line for the sense of predictability. For the git diff view, I do use VS Code or visual studio.

Collapse
 
jimmymcbride profile image
Jimmy McBride

I'm pretty similar! It's nice having side by side comparisons:)

Collapse
 
nbnnaji profile image
Nkechi Nnaji • Edited

Yes I’m always on git terminal writing commands daily… guess I’ll give lazygit a try.

Collapse
 
jimmymcbride profile image
Jimmy McBride

Heard lots of good things about LazyGit! Will be trying for myself soon!

Collapse
 
robertomaurizzi profile image
Roberto Maurizzi

I was using the command line almost exclusively until maybe a year/year and half ago.
Now when I do small changes I tend to stage from the editor (neovim+lazyvim) and if I need to browse things I use lazygit, but for "important" commits where I had to do a lot of back and forth to understand how things need to work I still use the command line, often with git add -p to keep the changes logical order

Collapse
 
sleeyax profile image
Sleeyax • Edited

Only for simple actions like switching branches, checking out code, browsing the commit log, etc. For more advanced actions like interactive rebase I prefer to use vscode's git integration (with the GitLens extension). This combo is most efficient to me.

Collapse
 
mistval profile image
Randall

I use a GUI for certain things, but for the basic workflow of fetching, pulling, rebasing, and committing, I use the terminal. I just use whichever tool I feel is most efficient.

For viewing commit history and diffs, I usually prefer to go online to Github or Gitlab and look there.

When I have a ton of old branches lying around and want to figure out which ones I don't need anymore and delete them, I like to use the VS Code GUI for that.

Collapse
 
kurealnum profile image
Oscar

Absolutely! I totally understand people who use a GUI but I don't really have a problem with the CLI, so there's no reason for me to change. The only times that I've seriously considered using a GUI tools are the times that I've completely messed up my repo.

Collapse
 
landry_soules_9116afc7ba2 profile image
Landry Soules

I use git in the terminal, associated with github.com/tj/git-extras and am super happy with it.
The few times I tried a gui, I always finished messing up my repo because the gui didn't do what I expected. Therefore, CLI all the way for me !

Collapse
 
oliversieto profile image
Renato O da Silva

I typically work with a variety of tools. Sometimes I use VS Code, and other times I use JetBrains. Lately, I've been using LazyGit as my Git tool, but when I'm in a hurry, I prefer using Git directly in the terminal because it's simpler. I try different tools since I work with VS Code, IntelliJ IDEA Community, and nvim.

In the end, I believe you should use the tool you feel most comfortable with. If working in the terminal is what suits you best, then that's what you should use.

Collapse
 
marcuswu profile image
Marcus Wu

I too use git on the command line. The few times I have used a GUI, I find myself thinking of any actions that I take in terms of what the equivalent commands are.

Perhaps it's just me and how I understand using git, but I feel like understanding what git does is better understood from the CLI.

Maybe I just haven't used the right GUI, but to me they have felt like a secondary tool -- something that distances me from what is important rather than enabling me in some way to get the job done faster, with more accurate results, or presenting information in a more understandable way.

Take for instance, navigating routes you know well vs. using a map or GPS navigation. If you know the routes well, you know how and why they get you where you are going. If traffic or construction presents you with problems, you can adjust and still get where you are going and you are less likely to make a wrong turn. The same can be said for maps and GPS, but the tool contains the intrinsic knowledge of where you are going and how to get there. You are at the mercy of the accuracy of its data and its interpretation of it. This is not a perfect analogy, but I think it gets the point across about how using GUI git tools have felt -- like using GPS navigation with out of date data or overly complex directions.

Collapse
 
raghubs81 profile image
Raghu Nandan

Yes, I use command line. However, I created duke-git -- An open source wrapper shell scripts for git commands.

I find them more intuitive and easy to use. It is not exhaustive but is sufficient for my daily work.

Collapse
 
kommradhomer profile image
kommradHomer

I always use it on the command line. I tried a few times on intellij and pycharm, but I cannot figure out how it works on UI. The only thing I figured out is to 'pull changes' to the current branch

Collapse
 
robertkraig profile image
Robert Kraig

I use intelij webstorm for 3 way merge during conflicts. Outside of that, always git cli, with delta-diff.

Collapse
 
andresrivera125 profile image
Andrés Rivera

Nothing better than the terminal. :-D

Collapse
 
solixzsys profile image
solixzsys

I must use git on vscode terminal 80% of the time. But I use vscode git integration for merge conflict resolution

Collapse
 
ngttuc profile image
Tuc T. Nguyen

Yes, the terminal is my IDE and my favourite TUI for Git is Lazygit.