Git and command-line fear

Git has been gaining a lot of traction lately, and rightly so. I’ve used it for a couple of years now, for all my projects (Fluent NHibernate and Docu being the prominent ones), but something that hasn’t changed is the tag-line of “but Windows support isn’t very good!”. What you quickly learn is that when people say that, they actually mean there isn’t a Visual Studio plug-in or some similar all-singing all-dancing GUI; this is a dire misrepresentation of Git, because it’s tooling on Windows is excellent if your definition of tooling includes the command-line.

It’s something ingrained in Windows developers, they hate the command-line. There’s a very good chance that if you encounter a Windows developer that does enjoy using the command-line it’s because they’ve also worked on another platform or in another environment that encourages command-line use (Rails is a good example). I’ve tried various ways of encouraging people to experiment, but very few work without being able to sit down and just show them something. It’s very much like R# adoption, nobody thinks it’ll speed them up until they see how fast someone else can be.

Back onto Git. If you don’t like what Git does, then that’s fine, but don’t label yourself as Alt.Net or a continuous improver if this sounds like you: “I define myself by choosing the best tool for each situation, but there’s no way you’ll get me using the command-line.” Way to go, oh open-minded one. Try it, you might like it.

The other techies have been posting some great Git posts which can help you get up to speed. I hope to contribute, with less bile, soon.

Related Articles:

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

This entry was posted in altnet, git. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://jason.lostechies.com Jason Meridth

    Amen brother. Amen.

    I’ve stalled on my posts due to other reasons, but plan to post my TortoiseGit and Extensions posts soon. They both show just how rough Windows GUI tooling is in regards to Git.

  • http://www.codebucket.org Lee Brandt

    Actually, I use git (mostly for getting src for MSPec) and there is actually a windows installer, a GUI AND a Visual Stuio plugin. (although I still use the GUI or CLI).

    I still need to learn more about git, but from what I’ve seen, I really like it.

    Thanks for the post,
    Lee

  • http://virtew.com Matthieu

    I understand ÿour fear of the “right-click” mania for development tasks (like the “generate my datagrid with my data access etc code in Visual Studio).

    But for *support* tools like source contol, using a command-line tool for the basic operations isn’t too much ? And I come from a Java background where, by example, the CVS integration inside Eclipse is a must !

  • http://www.lostechies.com/members/jagregory/default.aspx James Gregory

    Define “too much”.

    Updating:
    alt+tab git pull vs. grab mouse, right click on project, click update, click ok.

    Committing:
    alt+tab git commit -am ‘My message’ vs. grab mouse, right click on project, click commit, select files (or check all), tab to text box, enter message, click ok.

    I’m not trying to convince anyone to use the command-line if they don’t want to, but to just rule a project out because it doesn’t have a GUI is foolish at best.

  • http://virtew.com Matthieu

    you are not trying to convince anyone but you made a link between RAD(-bad) habits in the Windows development community and the reject of the commad line for a particular tool.

    If all source tools (Windows or not, Visual Studio or not) have a GUI, there’s maybe a reason ? Because It’s easier, you don’t have the context switch required by a command line tool. SVN have seen its adoption rate increased a lot when TortoiseSVN was available.

  • http://www.lostechies.com/members/jagregory/default.aspx James Gregory

    I made no link with RAD, simply tooling support doesn’t exclusively mean GUIs.

    Use whatever works for you, just don’t dismiss something because it’s outside of your comfort zone.

  • http://virtew.com Matthieu

    From what I understand you said that I can’t reject GIT because it has only cmd-line support, but rejecting GIT after evaluating it because it has only cmd-line support is maybe valid (for the reasons I expose about integration in IDE, context switch). I would not say the same thing for Apache or parsing utilities like awk or templating tools etc… .

  • http://blog.tiredstudent.com David R. Longnecker

    Mainly so I could grab the bits of FNH and dink with adding Oracle10/11 dialect support, I’ve been hacking through git the past few days (via various twitching and swears on twitter).

    Oddly enough, when I threw AWAY GitExtentions and just looked at Git Bash directly, it made a LOT more sense. I think I was most thrown by the fact I, as a learner, wasn’t quite sure WHAT the UI was doing… and that was impeding progress.

    So far, I’ve moved all of my ProjectLocker SVNs over to Git, hacked around on the code, and updated… works like a champ.

    Oh, and the memories that vi brings back are kinda nice. ;)

    Thanks for the links, mate… reading through now.

  • Steve Sheldon

    Hmm. I’m a command line guru, and you’re right about background. I was a Unix developer/admin back in the 1990s. But I was also using CP/M and DOS back to the 1980s and we had nothing but command line, so it’s no big deal.

    The CLI is better for a lot of things, but a GUI is also better for a lot of things. This is why I use Windows and not Unix.

    I haven’t tried Git so I don’t know if I would like it, but I’m honestly not much of a fan of using command line to manage source control. I used to use RCS and yeah I can do it… and yeah the command line tools are pretty easy for creating patches off your tree and such. But right clicking and hiting Commit is a lot easier for checking stuff in.

  • http://graysmatter.codivation.com Justice~!

    “Back onto Git. If you don’t like what Git does, then that’s fine, but don’t label yourself as Alt.Net or a continuous improver if this sounds like you: “I define myself by choosing the best tool for each situation, but there’s no way you’ll get me using the command-line.” Way to go, oh open-minded one. Try it, you might like it.”

    LOL, and what if what is best for my situation is using a source control system that doesn’t require me to use a DOS prompt!? =)

    Git – tool for NERDS

  • mendicant

    The reason that people shy away from the command line on windows is because it’s practically unusable, especially after using a real shell (such as bash).

    That being said, once I’ve got cygwin installed, I’m a command line junkie :D

  • http://www.lostechies.com/members/jagregory/default.aspx James Gregory

    Justice: Takes on to know one.

  • JohnnoNolan

    Your post has just mirrored my experience with Git. Its ingrained with me to use a Gui certainly and I guess that the biggest hurdle is that the command line that features are less discoverable. This has always been a problem for a casual user and so the novice will find the learning curve to be more difficult using a well designed GUI vs a well designed command line interface

  • http://jasonrowe.com/category/source-control/ Jason

    Here are the links that helped me get started right away with the cmd line.

    http://cheat.errtheblog.com/s/git
    http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png

    I fumbled around at first because folders with spaces need to be escaped. For example, to change directory in the git console app use “cd Program\ files”.

  • Paul Batum

    James, you know I’m a git fan, but I DO think it still has tooling problems on Windows. The default behavior for diffs, merges and blames are all painful, and I still haven’t managed to figure out how to get git to use my external tools (such as p4merge) in every case.

  • http://ajepst.devlicio.us/ Anne Epstein

    At my last shop, we used SVN, and it wasn’t only the developers checking stuff in-it was also the HTML coders, and sometimes even the graphics designers. Maybe that sounds like a mess, but it worked well- it was a web shop, there was a lot of static content, and Tortoise SVN suited our needs well. For that group, having a decent GUI was useful, and maybe necessary-perhaps command-line comfort should be expected of programmers, but should it be expected of everyone else? Real question… we decided that it was borderline unreasonable and decided to go with the source control with the best GUI at the time. If we only had programmers to consider, we might have made a different choice.

  • Sasa Brankovic

    I’m a GIT fan myself, but using GIT on Windows is a bit of pain (and so is using Windows, now I think of it). The “problem” here is that command line usually IS the fastest of getting things done, but only once you master it. It takes time and effort to master something, and for many developers spoiled by years of using Microsoft’s shiny IDE, this seems to be a problem.

  • http://www.brianmavity.com Brian Mavity

    While I agree that having some familiarity with the command line is essential for software developers, I feel that memorizing a ton of arcane commands is a waste of my mental energies. I can use git on windows (and do), but let’s face it, the command line sucks. Someday soon, someone will come out with a git UI that has a UX designed for human beings and we will stop having to suffer through the crap we have now. Unfortunately, I haven’t seen anything reasonable (including tortoise git and git extensions which are both decent but still very deficient)

  • Bill Barry

    Another reason people might say that is because they haven’t looked in the past year or so. MsysGit is pretty good, but it hasn’t been for very long. When I went looking for a DVCS, windows Git support consisted of: install cygwin; use git there. That is poor windows support (it would be like saying that Office 2003 runs in Linux because it works fine under Wine).

    From a Windows perspective 2 years ago, Git wasn’t an option.

    This isn’t a good excuse for ignoring Git now (though I still feel that Mercurial is a better choice).

  • http://www.kennyd.com Kenneth Dalgleish

    What’s wrong with git-gui and gitk included in the install? I have been working with git on windows for some years now, first Cygwin and then Msysgit. I rely heavily on git.gui and gitk, and only use command-line for certain operations, like rebase. Some advanced stuff, like cherry-picking or partial commits ++, is a breeze in the gui. And all the regular stuff is there, easily accessible, like branch management, push, pull, commit, merge, file-staging and so on.

  • http://georgemauer.net/blog George Mauer

    I will gladly use command-line all the time for everything once it has

    1) Regular cut and paste like all other applicaitons
    2) Some sort of intellisense to increase discoverability.

    Simply put, the usability story for every command-line utility ever is a nightmare.

  • http://www.lostechies.com/members/jagregory/default.aspx James Gregory

    George: Nice generalisations.

    Cut and paste from the raw command-line is crap, yes, but specific applications can handle it how they like. Vim does it pretty decently, for example.

    Same goes for completion. You can get completion scripts for bash that enable autocomplete for git, and it already has built in filename completion.

    I’d suggest trying a command-line other than cmd.exe.

  • http://www.balonturu.net semazen gösterisi

    is, but specific applications can handle it how they like. Vim does it pretty decently, for example.

    Same goes for completion. You can get completion scripts for

  • http://www.balonturu.net semazen

    is, but specific applications can handle it how they like. Vim does it pretty decently, for example.

    Same goes for completion. You can get completion scripts for