The easiest way to use git. On any platform. Anywhere.
Clone or download
jung-kim Merge pull request #1135 from FredrikNoren/campersau-patch-1
fix git gpgsign command in README.md
Latest commit cf34c78 Sep 9, 2018
Permalink
Failed to load latest commit information.
assets Add HiDPI logo and favicon Oct 20, 2017
bin Adding catch to ungit navigate Jul 14, 2018
components Merge branch 'master' into storage Aug 14, 2018
nmclicktests Catch DOMException from accessing localStorage Aug 14, 2018
public Merge branch 'master' into storage Aug 14, 2018
source Change to string Jul 12, 2018
test Fix unitests and travis settings Jun 3, 2018
.gitattributes Add .gitattributes Aug 30, 2015
.gitignore fix back gitignore Jun 29, 2018
.nodemonignore Ignore .git for nodemon Jun 1, 2013
.npmignore Add .npmrc to .npmignore Dec 13, 2016
.travis.yml add allow root for electron Aug 13, 2018
CHANGELOG.md 1.4.32 Aug 17, 2018
CONTRIBUTING.md Reminder to bump package-lock.json. Apr 2, 2018
Gruntfile.js Wrap localStorage Aug 10, 2018
LICENSE.md Revert to MIT Dec 22, 2017
MERGETOOL.md Added detailed documentation for using external merge tools. Sep 7, 2016
PLUGINS.md Update PLUGINS.md Aug 29, 2014
README.md Merge pull request #1135 from FredrikNoren/campersau-patch-1 Sep 9, 2018
appveyor.yml Adding node cache clean Apr 30, 2017
gpg_save_screenshot.png Adding docs May 14, 2018
icon.ico update package configuration for electron package description Sep 9, 2015
icon.png Nw development "mode" Oct 19, 2013
package-lock.json 1.4.32 Aug 17, 2018
package.json 1.4.32 Aug 17, 2018
screenshot.png add screenshot to README Aug 20, 2013
teststabilitytester.js Test stability tester Sep 14, 2013
xkcd.png Adding back in xkcd image Jan 3, 2018

README.md

ungit

NPM version Build Status Join the chat at https://gitter.im/FredrikNoren/ungit

The easiest way to use git. On any platform. Anywhere.

xkcd

Git is known for being a versatile distributed source control system that is a staple of many individuals, communities, and even for the City of Chattanooga to crowd source bicycle parking locations. However, it is not known for userfriendliness or easy learning curve.

Ungit brings user friendliness to git without sacrificing the versatility of git.

Follow @ungitui on twitter

Quick intro to ungit: http://youtu.be/hkBVAi3oKvo

Screenshot

Installing

Requires node.js (≥ 6.11), npm (≥ 3.10.10, comes with node.js) and git (≥ 1.8.x). To install ungit just type:

npm install -g ungit

NOTE: If your system requires root access to install global npm packages, make sure you use the -H flag:

sudo -H npm install -g ungit

Using

Anywhere you want to start, just type:

ungit

This will launch the server and open up a browser with the ui.

Configuring

Put a configuration file called .ungitrc in your home directory (/home/USERNAME on *nix, C:/Users/USERNAME/ on windows). Configuration file must be in json format. See source/config.js for available options.

You can also override configuration variables at launch by specifying them as command line arguments; ungit --port=8080. To disable boolean features use --no: ungit --no-autoFetch.

Example of ~/.ungitrc configuration file to change default port and enable bugtracking:

{
	"port": 8080,
	"bugtracking": true
}

PGP

Git and github both supports PGP signing. Within Ungit these features can be enabled via doing either one of the below two actions.

  • git config --global commit.gpgsign true (or without --global at the repo)
  • Add isForceGPGSign: true to ungit.rc file

Currently, Ungit DOES NOT support GPG authentication! While git allows robust programmatic authentication via credential-helper, I could not find an easy way to do something equivalent with GPG.

Therefore, password-less gpg authentication or 3rd party gpg password must be configured when using Ungit to commit with gpg. Below are several way to enable password-less gpg authentication for various OSs.

  • Cache GnuPG passphrase
  • gpg-agent with pinentry-mac
    1. brew install gnupg gpg-agent pinentry-mac
    2. echo "test" | gpg --clearsign # See gpg authentication prompt when gpg is accessed.
    3. Optionally you can save it to keychain. gpg_save_screenshot

I understand this is not convenient, but security is hard. And I'd much rather have bit of inconvenience than Ungit having security exposure.

External Merge Tools

If you have your own merge tool that you would like to use, such as Kaleidoscope or p4merge, you can configure ungit to use it. See MERGETOOL.md.

Auto Refresh

Ungit will watch git directory recursively upon page view and automatically refresh contents on git operations or changes on files that are not configured to be ignored in .gitignore.

One caveat is that node's fs.watch() with recursive: true option is only available in Mac and Windows. For non Mac and Windows machines, git operations will be automatically refreshed but file changes may require manual refreshes as fs.watch() is unable to detect changes within nested directory hierarchy.

Text Editor Integrations

atom-ungit Screenshot

brackets-ungit Screenshot

Codiad-OpenUngit screenshot

VSCode-Ungit screenshot

Developing

See CONTRIBUTING.md.

Maintainers

Known issues

  • If you're running MacOSX Mavericks and Ungit crashes after a few seconds; try updating npm and node. See #259 and #249 for details.
  • Ubuntu users may have trouble installing because the node executable is named differently on Ubuntu, see #401 for details.
  • Debian Wheezy's supported git and nodejs packages are too old, therefore download newest git and nodejs tarballs and build from source.
  • Adblocker may block Ungit! Some ad blockers, such as Adblock plus and uBlock, don't like localhost api calls and assume that it is a cross domain attack. Please whitelist {localhost|127.0.0.1|$UngitURL}:{ungit port number}. #887 #892
  • Running git in non English language will result in unexpected behavior! Ungit parses git command results in English to detect repos' states and this causes confusion when git results are not in English. #959

Changelog

See CHANGELOG.md.

License (MIT)

See LICENSE.md. To read about the Faircode experiment go to #974. Ungit is now once again MIT.

Dependency Status devDependency Status