[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10143":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":18,"lastSyncTime":34,"discoverSource":35},10143,"ungit","FredrikNoren\u002Fungit","FredrikNoren","The easiest way to use git. On any platform. Anywhere.","",null,"JavaScript",10583,647,231,209,0,1,2,8,3,43.43,"MIT License",false,"master",true,[27,28,29,30,5],"git","javascript","nodejs","ui","2026-06-12 02:02:17","ungit\n======\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FFredrikNoren\u002Fungit)](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Freleases)\n[![CI](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Factions\u002Fworkflows\u002Fci.yml)\n[![Join the chat at https:\u002F\u002Fgitter.im\u002FFredrikNoren\u002Fungit](https:\u002F\u002Fbadges.gitter.im\u002FFredrikNoren\u002Fungit.svg)](https:\u002F\u002Fgitter.im\u002FFredrikNoren\u002Fungit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\nThe easiest way to use git. On any platform. Anywhere.\n\n[![xkcd](xkcd.png \"If that doesn't fix it, git.txt contains the phone number of a friend of mine who understands git. Just wait through a few minutes of 'It's really pretty simple, just think of branches as...' and eventually you'll learn the commands that will fix everything.\")](https:\u002F\u002Fxkcd.com\u002F1597\u002F)\n\nGit 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](https:\u002F\u002Fgithub.com\u002Fcityofchattanooga\u002FBicycle-Parking).  However, it is not known for userfriendliness or easy learning curve.\n\nUngit brings user friendliness to git without sacrificing the versatility of git.\n\n * Clean and intuitive UI that makes it easy to _understand_ git.\n * Runs on any platform that node.js & git supports.\n * Web-based, meaning you can run it on your cloud\u002Fpure shell machine and use the ui from your browser (just browse to http:\u002F\u002Fyour-cloud-machine.com:8448).\n * Works well with GitHub.\n * [Gerrit](https:\u002F\u002Fcode.google.com\u002Fp\u002Fgerrit\u002F) integration through plugin: https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit-gerrit\n\n[Follow @ungitui on twitter](https:\u002F\u002Ftwitter.com\u002Fungitui)\n\nQuick intro to ungit: [https:\u002F\u002Fyoutu.be\u002FhkBVAi3oKvo](https:\u002F\u002Fyoutu.be\u002FhkBVAi3oKvo)\n\n[![Screenshot](screenshot.png)](https:\u002F\u002Fyoutu.be\u002FhkBVAi3oKvo)\n\nInstalling\n----------\nRequires [node.js](https:\u002F\u002Fnodejs.org) (≥ 20.19.0), [npm](https:\u002F\u002Fwww.npmjs.com\u002F) (≥ 10.8.2, comes with node.js) and [git](https:\u002F\u002Fgit-scm.com\u002F) (≥ 2.34.x). To install ungit just type:\n\n\tnpm install -g ungit\n\nNOTE: If your system requires root access to install global npm packages, make sure you use the -H flag:\n\n\tsudo -H npm install -g ungit\n\nPrebuilt [electron](https:\u002F\u002Felectronjs.org\u002F) packages are available [here](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Freleases) (git is still required).\n\nUsing\n-----\nAnywhere you want to start, just type:\n\n\tungit\n\nThis will launch the server and open up a browser with the ui.\n\nConfiguring\n-----------\nPut a configuration file called .ungitrc in your home directory (`\u002Fhome\u002FUSERNAME` on \\*nix, `C:\u002FUsers\u002FUSERNAME\u002F` on windows). Configuration file must be in json format. See [source\u002Fconfig.js](source\u002Fconfig.js) for available options.\n\nYou 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`.\n\nExample of `~\u002F.ungitrc` configuration file to change default port and enable bugtracking:\n\n```json\n{\n\t\"port\": 8080,\n\t\"bugtracking\": true\n}\n```\n\nPGP\n---\n[Git](https:\u002F\u002Fgit-scm.com\u002Fbook\u002Fen\u002Fv2\u002FGit-Tools-Signing-Your-Work) and [github](https:\u002F\u002Fhelp.github.com\u002Farticles\u002Fsigning-commits-using-gpg\u002F) both supports PGP signing.  Within Ungit these features can be enabled via doing either one of the below two actions.\n\n- `git config --global commit.gpgsign true` (or without `--global` at the repo)\n- Add `isForceGPGSign: true` to `ungit.rc` file\n\nCurrently, Ungit __DOES NOT__ support GPG authentication!  While git allows robust programmatic authentication via [`credential-helper`](https:\u002F\u002Fhelp.github.com\u002Farticles\u002Ftelling-git-about-your-gpg-key\u002F), I could not find an easy way to do something equivalent with GPG.  \n\nTherefore, password-less gpg authentication or 3rd party gpg password must be configured when using Ungit to commit with gpg.\nBelow are several way to enable password-less gpg authentication for various OSs.\n\n- [Cache GnuPG passphrase](https:\u002F\u002Fsuperuser.com\u002Fquestions\u002F624343\u002Fkeep-gnupg-credentials-cached-for-entire-user-session)\n- gpg-agent with pinentry-mac\n  1. `brew install gnupg gpg-agent pinentry-mac`\n  2. `echo \"test\" | gpg --clearsign` # See gpg authentication prompt when gpg is accessed.\n  3. Optionally you can save it to keychain. ![gpg_save_screenshot](gpg_save_screenshot.png)\n\nI understand this is not convenient, but security is hard. And I'd much rather have bit of inconvenience than Ungit having security exposure.\n\n\nExternal Merge Tools\n--------------------\nIf 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](MERGETOOL.md).\n\nAuto Refresh\n------------\nUngit 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`.\n\nText Editor Integrations\n-------------------\n\n* [atom-ungit](https:\u002F\u002Fgithub.com\u002Fcodingtwinky\u002Fatom-ungit) for [Atom.io](https:\u002F\u002Fatom.io\u002F) by [@codingtwinky](https:\u002F\u002Fgithub.com\u002Fcodingtwinky)\n\n![atom-ungit Screenshot](https:\u002F\u002Fraw.githubusercontent.com\u002Fcodingtwinky\u002Fatom-ungit\u002Fmaster\u002Fscreenshot.png)\n\n* [brackets-ungit](https:\u002F\u002Fgithub.com\u002FHirse\u002Fbrackets-ungit) for [Brackets.io](http:\u002F\u002Fbrackets.io\u002F) by [@Hirse](https:\u002F\u002Fgithub.com\u002FHirse)\n\n![brackets-ungit Screenshot](https:\u002F\u002Fraw.githubusercontent.com\u002FHirse\u002Fbrackets-ungit\u002Fmaster\u002Fimages\u002Fviewer.png)\n\n* [vscode-ungit](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=Hirse.vscode-ungit) for [Visual Studio Code](https:\u002F\u002Fcode.visualstudio.com\u002F) by [@Hirse](https:\u002F\u002Fgithub.com\u002FHirse)\n\n![VSCode-Ungit screenshot](https:\u002F\u002Fraw.githubusercontent.com\u002Fhirse\u002Fvscode-ungit\u002Fmaster\u002Fscreenshots\u002Fungit.gif)\n\n\nDeveloping\n----------\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\nMaintainers\n-----------\n\n* [FredrikNoren](https:\u002F\u002Fgithub.com\u002FFredrikNoren) [Fredrik's Patreon page for donations](https:\u002F\u002Fwww.patreon.com\u002Ffredriknoren)\n* [Jung-Kim](https:\u002F\u002Fgithub.com\u002Fjung-kim) [JK's (codingtwinky) Patreon page for donations](https:\u002F\u002Fwww.patreon.com\u002Fjungkim)\n* [campersau](https:\u002F\u002Fgithub.com\u002Fcampersau)\n\nKnown issues\n------------\n\n* If you're running MacOSX Mavericks and Ungit crashes after a few seconds; try updating npm and node. See [#259](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Fissues\u002F259) and [#249](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Fissues\u002F249) for details.\n* Ubuntu users may have trouble installing because the node executable is named differently on Ubuntu, see [#401](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Fissues\u002F401) for details.\n* Debian Wheezy's supported git and nodejs packages are too old, therefore download newest [git](https:\u002F\u002Fgithub.com\u002Fgit\u002Fgit\u002Freleases) and [nodejs](https:\u002F\u002Fnodejs.org\u002Fdownload\u002F) tarballs and [build from source](https:\u002F\u002Fwww.control-escape.com\u002Flinux\u002Flx-swinstall-tar.html).\n* Adblocker may block Ungit! Some ad blockers, such as [Adblock plus](https:\u002F\u002Fadblockplus.org) and [uBlock](https:\u002F\u002Fwww.ublock.org\u002F), 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](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Fissues\u002F887) [#892](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Fissues\u002F892)\n* 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](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Fissues\u002F959)\n\nChangelog\n---------\nSee [CHANGELOG.md](CHANGELOG.md).\n\nLicense (MIT)\n-------------\nSee [LICENSE.md](LICENSE.md). To read about the Faircode experiment go to [#974](https:\u002F\u002Fgithub.com\u002FFredrikNoren\u002Fungit\u002Fissues\u002F974). Ungit is now once again MIT.\n\n[![Dependency Status](https:\u002F\u002Fdavid-dm.org\u002FFredrikNoren\u002Fungit.svg)](https:\u002F\u002Fdavid-dm.org\u002FFredrikNoren\u002Fungit)\n[![devDependency Status](https:\u002F\u002Fdavid-dm.org\u002FFredrikNoren\u002Fungit\u002Fdev-status.svg)](https:\u002F\u002Fdavid-dm.org\u002FFredrikNoren\u002Fungit#info=devDependencies)\n","ungit 是一个简化 Git 操作的工具，适用于任何平台。它通过提供一个清晰直观的用户界面来降低 Git 的学习曲线，使用户能够更轻松地理解并操作版本控制系统。基于 Node.js 构建，ungit 可以在支持 Node.js 和 Git 的任何平台上运行，并且作为一个 Web 应用程序，用户可以通过浏览器访问其界面，非常适合远程开发环境或需要频繁进行代码版本管理的场景。此外，ungit 还提供了与 GitHub 和 Gerrit 等服务集成的能力，进一步增强了其实用性。","2026-06-11 03:26:49","top_topic"]