What is a good newbie-friendly graphical Git client for Windows?
Personally I'd just install Cygwin and proceed with the usual *nix shell tools, but I need to make a software recommendation to some clients that need something a bit more newbie friendly.
The situation is that several clients have developed website(s) of the mostly static HTML sort, but the server they need to deploy to doesn't have the usual collection of 1990s protocols available (for example, no FTP). In fact, there is no access to any graphical interface. Deployment is handled through Git. Changes need to be pushed to a a remote repository that is accessible only via SSH key login. Any commits to the master branch pushed by the authorized key trigger a hook script that deploys the site to the production servers.
I am looking to suggest a Git client for Windows that:
- makes it relatively simple to setup and initialize…
- …one or more local repositories.
- …a single git+ssh remote.
- …authentication using an RSA key pair (generation of this would be a bonus).
- has a simple interface where a basic workflow of committing and pushing is easy to accomplish without understanding the intricacies of distributed version control.
There is a GitLab instance available for each client that has one project per domain and makes adding their public key fairly easy. It also gives the clone/remote URLs for each project and makes it fairly easy to check what the status of the remote repository is.
Open source would be preferred, but any reputable freeware would be acceptable. What client software should I point them to?
Edit: Most suggestions to date seem to focus on full blown front ends to all of Git's functionality. I'm looking for something more pared down that only covers the basics and is better suited for a specific task than at running with the big dogs. I'm thinking the KISS principle here for people that do not use version control for anything else and just want to "upload" their websites.
Please note I asked a similar question for OSX, but I specifically want tools that are familiar and easy te get the hang of. Cross platform would be OK, but I have and idea the best newbie solution for newbies will be something native to each platform so please keep that in mind when answering.
Not sure this is full-fledged enough for an answer: I've only ever used PortableGit on Windows. It was my first use of Git (I "migrated" from SVN) and it worked very well: a doddle to install. Full suite info from Git for Windows. FWIW.
@ManuelSchneid3r +74/-0 at the time of this posting. Answers are +58/-2, +48/-3, +34/-0, +12/-0, +8/-1, +2/-0, order by votes.
Just joined this SO site, so I can't answer yet, but here's a fairly new offering from Axosoft: http://www.gitkraken.com/ It seems to be one of those modern Node-built apps, and doesn't yet support submodules, but so far it blows the doors off SourceTree for offering powerful features in a simple manner.
Also just joined this SO site, I could add that for all people who like IDEs Visual Studio 2015 (even free edition) has awesome support for Git. It has easy to manage added/edited/removed files; integrated merge tool; simple setup. It does not support SSH but other than that is one of the best tools for Git on Windows.
- makes it relatively simple to setup and initialize…
There is nothing like TortoiseGit for beginners.
- It integrates with Windows Explorer (no new UI to learn)
- Open source (GPL)
- Setup/initialize new local repo:
- Basic functions are in the top of context menu (Sync, Commit, Push and Pull):
@Olli, I find my answer pretty much inline with the instructions in that post. I explicitly state why this product match the request, highlight the relevant features and express my opinion about it. What's missing?
@Jbaruch how easy it is to initialize new local repository? A single git+ssh remote? authentication? Is it open source? There's specific requirements set in the question that you don't address.
I still don't think it qualifies as high-quality answer. It's starting to fit the most basic requirements, though. More citations from that linked meta post: "You should also talk about any potential quirks that you can think of, and even things that you found to be a down side of the product. In short, share your experience with something, not simply your knowledge that it exists."
Here we go again. I don't use that tool ATM. So I am not aware of any quirks, problems, downsides, etc. I don't have any relevant experience with it. Should I delete my answer now (good answer, well explained, providing valuable and relevant information)? NP, really. If you only expect no less than perfect, count me out. I prefer existing good over non-existing perfection.
If you don't have any relevant experience with it, *maybe you should not recommend* it? In my opinion, you should either improve this answer or delete it and add a comment to the question instead.
Delete the only relevant and good answer?! That's amazing tip. This site is going places with this attitude, that's for sure.
TortoiseGit is about as simple as Git gets. If someone else sets it up for you, all you need to do to commit changes is right click on the file (or folder) in Explorer and select "Git Commit."
I would not recommend the Tortoise tools to a beginner because they're too bare-bones. There is no GUI that tells them what's going on. I think this tool is rather for advanced users who know what to expect when they issue a git command.
I tried this after reading this recommendation but personally I found it too frustrating to learn in 5 minutes so I downloaded SourceTree and found that much easier to use... mainly because there is an Interface. I agree with T.T.'s comment
*"It integrates with Windows Explorer"* Yucks, yucks, yucks. Is there a standalone portable version?
While TortoiseGit is a powerfull tool and the shell integration is nice, it won't win any awards for usability. It's not like you have one streamlined interface for most git commands, there are different windows and tools for everything and some are made for sadists, I'm sure. In my opinion, it doesn't meet the criteria for a 'good newbie friendly graphical Git client for Windows' like the OP asks for...
I personally prefer not to use Tortoise GIT. While Tortoise SVN is a wonderful SVN tool, Tortoise GIT borrows a little too much from Tortoise SVN, retains a lot of SVN terminology and workflow alike. It kind of hard or unclear to do things "the GIT way". For example, one would never know what "Synchronize" in Tortoise GIT mean - because there's no such native command. On the other hand, if doing things "the GIT way" doesn't matter and most of the devs com from the SVN realm, but decided to use GIT for whatever reason. Tortoise GIT works.
Having spent years using TortoiseHg, I thought TortoiseGit would offer a similar experience. Wrong. While you could do basically anything for Mercurial under "Hg Workbench" through a single unified UI, TortoiseGit is totally fragmented. There's no "central window", just lots of disjointed panels which feel incomplete, inconsistent with each other, and confusing. Put simply, you need to already know git commands before you can use TortoiseGit, while you can use TortoiseHG for years and never touch the command line. For that reason, I consider TortoiseGit to be a bad tool.
@RogerSanders - This is great feedback. I am in a similar situation - used TortoiseHg fairly productively for a long time, yet I'm still a total noob regarding raw Mercurial, or command-line version control in general. I can accept that Git has "won" (see Bitbucket, for example) and so am looking for whatever the Git equivalent of TortoiseHg is. Disappointing that TortoiseGit doesn't live up to the "Tortoise franchise" standards.
I moved from Github For Windows and then Git Extensions to SmartGit and recommend it. Here's why-
- Cross-Platform (made in Java)
- Very easy to setup and use. If you have experience with any git clients before, you won't take a minute getting on business.
Simple Clean UI. The main interface only shows the changed files and the big Commit, Merge, Push and Pull buttons.
Commercial software but free for private use.
For git beginners or non-git users, the only pain will be setting up the SSH keys. Once you have done that and cloned your first repository, it will be straight-forward and you will never have to open the console.
This question is very specifically for people who **do not have any git (or vcs) experience** and don't plan to have any. Could you comment on how this would work for that use case? It almost sounds like something earlier in your chain might be better. What is "Git Extensions"?
@Caleb I have edited the answer. **Git Extensions** may be easy to set up first-up because of the integrated plugins for many services but for the latter "managing the repo" part I prefer SmartGit because it is more simple. +it is portable
I used SmartGit as my first git client and it is easy to use with only a slight learning curve. I would recommend it to anyone.
SmartGit is really good, both for newbies but also for more experienced users. You can get a good visual sense of what goes on and simplify most everyday tasks.
I have also used SmartGit as my first Git GUI, when I had absolutely no understanding of Git and still managed to use it. That being said, I consider myself more of a power user.
The only problem it supports BitBucket by SSH only. I wish it could support BitBucket over HTTPS. Any other portable client?
This software contains virus as detected by virutstotal https://www.virustotal.com/en/file/ce116edb5b1e4913a9402ba18a464fef5123a824f2b1a2f5a364e4f80502016e/analysis/1422037393/
I strongly agree. SmartGit is probably the best simple version control client around. It has pretty much every functionality you could ever want in a GUI, but is still pretty easy to use if you don't need any of the advanced features. Also, Java software is great as long as you're not the one writing it. Except for that Swing business. It's just so ugly.
I am using Atlassian SourceTree and like it a lot.
Here's the drill:
- Free (not open-source thought AFAIK)
- Feature rich - Almost all the features of Git is there (not of GitHub, though, e.g. I didn't find a way to rebase a GitHub fork. It's doable using ordinary Git commands - adding remote etc, but not out of the box)
- Supports GitFlow
NOTE - This screenshot is from a much older version. The UI of the newer version is simpler.
Bottom line - I find it almost perfect and use it for all the needs not covered inside my IDE.
That looks WAY too complex—too many buttons. I don't want "feature rich" so much as "feature sparse". This may be great for somebody who understood branching and diff trees and all that good stuff, but not for a newbie that does't actually plan on learning git. I need something that glosses over the complexities of even doing basic staging before a commit.
I can see some point in letting it stand as a warning to others about what _isn't_ a good fit for this question, but it's just (hopfully) going to end up low on the stack and I can see wanting to have it removed later. I guess that would depend on whether you thought it was a good/valid answer to this question (your other entry seems to have understood the problem better).
SourceTree is by far the best, but they don't have a Linux version. It looks intimidating at first, but it's really not at all. Very simple to use.
I used SourceTree but moved to SmartGit. SourceTress was nice but I found the interface to be cumbersome. Personal preference for sure but I just find the interface more powerful on SmartGit. SourceTree is still pretty good but not my preference.
They just updated the SourceTree interface, which made it a bit less bulky. I personally enjoy it very much. I was a total beginner with the whole Git thing and it took me only a few hours to get comfortable enough thanks to this client.
@Caleb it looks more complicated in that screenshot that your use case will be. I highly recommend at least delving into a bit of git if you are a contributor. Ignorance is no excuse. Sourcetree 'just works' and looks good while it is doing it.
I always have some performence issues. It's really slow tool. My entire team have the same opinion.
It's not complex at all... I learned it in a few minutes, after having frustrating experiences with other clients. Smart Git actually crashed on me right after it asked if it's ok to send crash information, lol. This is a crash on run, so couldn't get to the main screen even. SourceTree is great except for some slight freezing when doing things with the repo of mine that has many files.
GIT itself comes with features that any user should learn and understand. "sparse" and "simple" are good characteristics to have but in the case of SourceTree you need to know what you are doing. The comments on "slow" are echoed by me. If you understand what is going on then you know why and when to expect it to be slow, however I find it almost unacceptable along with the constant "oh how embarrassing SourceTree crashed" messages. Once a crash actually messed up a merge and seriously messed up my commit wasting quite a bit of time. Looking into other GUIs...
If you go with SourceTree, stick with version 1.7. 1.8 is horrible. Download link for 1.7: https://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_184.108.40.206509.exe
I very much like Git for Windows (msysGit). It has three 'modes' - Bash (where you can do everything), Windows Context Menu, and GUI (where you can do a lot less but it is I would say very user friendly).
- makes it relatively simple to setup and initialize: Very easy
- one or more local repos: Initialization is very simple and you can have as many as you want with no conflicts.
- a single git+ssh remote: Easy - pretty easy to add more remotes if desired at some point in the future as well. (see screenshot below which is accessed by GitGUI->remote->add)
- authentication using an RSA key pair (generation of this would be a bonus): Yes, you can also generate it although that is only via cmd line (see this tutorial)
- has a simple interface where a basic workflow of committing and pushing is easy to accomplish without understanding the intricacies of distributed version control: Yes, see screenshot, it was much easier to learn for me when I first started playing with code than RapidSVN or TortoiseSVN.
From the cmdline you can do EVERYTHING (pretty much); the GUI does have quite a few features but nothing complicated is shown on the front screen (only commit related), everything else is hidden in the menus.
- makes it relatively simple to setup and initialize: Very easy
The most simplistic and easy I have ever seen is GitHub for Windows:
But there is one caveat: using with non-github repositories isn't intuitive (feels like a hack TBH).
IMO, the omission of fetch and push from the vocabulary damages its utility as a non-github tool.
It's too simplistic. Very quick you will find that it doesn't have enough fuctionality. E.g I didn't find, does it support stash.
You may consider using GitKraken. Some features:
- Free for non-commercial use
- Cross-platform (Windows, Mac, Linux)
- Multiple profile support
- One-click undo & redo
- Built-in merge tool
- Drag and drop to merge, rebase, reset, push and more
- Resizable, easy-to-understand commit graph
- View image diffs in app
- Submodules and Gitflow support
- Integrate with GitHub or Bitbucket account
ungit has a strong ease of use and understandability focus (as the name suggests)
npm install -g ungit
It is Node.js based and runs a server that users can view on the browser, so it is cross platform.
Not sure if it manages SSH for users, but it is definitely something that I can see them doing.
I didn't like that it puts a "node_modules" directory **inside my repo** with thousands of files in it. Why?
@TamásSzelei don't tell anyone, but I haven't actually tried it ;-) But does it treat `node_modules` specially? Doesn't the same happen with other directories? Isn't it a `.gitignore` problem?
That depends on how you look at it. You can `gitignore` it, sure, but I'm reluctant to push a change to every user of this repo just because my git client puts (parts of?) its source code in the repo. Surely someone would ask what the hell am I doing with "node_modules" in a C++ project.
- crossplatform (Linux, Windows, OSX)
- GitKraken advertise itself as better that Git Cola
I use it as main git interface on Linux. Very easy to do everyday operations
- Revert last local commit (change description, add missing changes)
- Commit changes for selected lines (isolate not related changes)
- View Log (included DAG tool)