/awesome-git

A curated list of amazingly awesome Git tools, resources and shiny things

Creative Commons Zero v1.0 UniversalCC0-1.0

Awesome Git

A curated list of amazingly awesome Git tools, resources and shiny things.

Contributing

Pull requests on interesting tools/projects/resources are welcome.

Table of Contents

Tutorial

There are tons of learning material on the Web

Style Guide

Style guide when you work with git

Client

Git clients are available on every platform, from mainframe to your mobile device

  • TortoiseGit - an easy-to-use Git client on Windows. well-integrated with Windows Explorer.
  • GitHub Desktop - Git Client by GitHub. works with GitHub and GitHub Enterprise seamlessly
  • SourceTree - free (in-beer) GUI client. Windows and Mac only
  • Tower - a popular non-free Git GUI client. Mac and Windows
  • SmartGit - a commercial comprehensive SCM client with Git, SVN, Mercurial. cross-platform (works on Windows, Mac and Linux)
  • RabbitVCS - TortoiseSVN inspired graphic tool for version control systems, with Nautilus and Thunar integration
  • gitg - a open-source GTK+ GUI client
  • git-cola - a cross-platform Git GUI client
  • SGit - Git client for Android 4.x
  • Ungit - The easiest way to use git. On any platform. Anywhere.
  • GitKraken - a cross Git client for Windows, Mac & Linux. Electron based. Free for non-commercial use and paid Pro version is available.
  • GitUp - a clean, minimal Git client. Mac only.
  • GitExtensions - a shell extension, a Visual Studio 2010-2015 plugin and a standalone Git repository tool.
  • WorkingCopy - a powerful Git client for iOS. Free with in-app purchase to unlock the ability to push commits.
  • Git Add-ons - Enhance the basic git CLI
  • Fork - An awesome and free git client for macOS and Windows
  • Magit - A Git porcelain inside Emacs

Repository Hosting

People have plenty of options to host their source code

  • GitHub - the de-facto git hosting service. Perfect integration with most external services.
  • BitBucket - well-known for its free private repository (5 user max).
  • Kiln - paid Git repository hosting service
  • GitLab.com - a free Git repository hosting service served by GitLab EE. Unlimited repositories and private collaborators
  • AWS CodeCommit - a SaaS service provided by Amazon Web Service on high availability infrastructure
  • Deveo - a paid repository hosting service with support for Git, Subversion, Mercurial, WebDAV

Self-Hosted Repository

Or you can host the code yourselves

  • Gitolite - a simple with fine-grained access control
  • GitHub Enterprise - self-hosted solution provided from GitHub
  • Bitbucket Server - self-hosted refrom Atlassian. Good integration with JIRA and other Atlassian products
  • GitLab CE/EE - a popular open-source Git (CE) with paid support option (EE).
  • Upsource - recent offer from Jetbrains, a famous developer-oriented software company. Code repository hosting feature pending. Free for 10 users. Good integration with YouTrack and TeamCity
  • GitBucket - a GitHub clone powered by Scala.
  • Gogs - a self-hosted Git Service written in Go.
  • Gitea - a community managed fork of Gogs, lightweight code hosting solution written in Go.
  • GitBlit - Pure Java Stack for managing, view, and serving Git repositories.
  • Apache Allura - an open source implementation of project hosting platform
  • Phabricator - an integrated set of powerful tools to help companies build higher quality software
  • RhodeCode CE/EE - a platform delivering enterprise source code management

Workflow

Inexpensive branching allows people adopt workflows other than the classic centralized workflow

Hook management

Git provide hooks at commit/push phrase, allowing integration with and code quality checking tool and Continuous Integration (CI)

  • pre-commit - a framework for managing and maintaining multi-language pre-commit hooks from Yelp. Extensive support for multiple programming language.
  • Overcommit - a extendable Git hook manager written with Ruby.
  • git-hooks - tool to manage project, user, and global Git hooks
  • quickhook - a fast, Unix'y, opinionated Git hook runner
  • husky - Git hooks for Node.js, manage your hooks from your package.json
  • more on https://githooks.com/

Tools

Various tools for daily operations

  • awesome-git-addons - lists more than 20 git addons including all available commands
  • myrepos - a tool to manage multiple version control repositories
  • mu-repo - a tool to help in dealing with multiple git repositories
  • gr - a tool for managing multiple git repositories
  • BFG Repo-Cleaner - a simpler, faster alternative to git-filter-branch for cleansing bad data out of your Git repository history
  • GitIgnore Collection - collection of gitignore files for various programming language
  • etckeeper - a collection of tools to let /etc be stored in a git repository
  • git-extras – git utilities adding useful git commands.
  • git-extra-commands - Another collection of useful git commands.
  • git-follow - a tool for following lifetime changes of a file throughout the history of a Git repository.
  • Gitrob - a command line tool to find sensitive information lingering in publicly available files on GitHub
  • gitFS - a FUSE file system that fully integrates with git
  • Gitless - an experimental version of Git that changes some of Git's underlying concepts
  • ghq — Organization for remote repositories
  • bash-git-prompt - An informative and fancy bash prompt for Git users
  • conventional-changelog - a set of tools for parsing conventional commit messages from git histories
  • release-it - Automate releases for Git repositories and/or npm packages. Changelog generation, GitHub/GitLab releases, etc.

Extensions

Git is designed for source control management. but people extend the idea and push version control to everywhere

  • Git Large File Storage - practical solution for versioning large files. supported by GitHub
  • Git Virtual File System or GVFS - solution for managing very large Git repository while maintaining speed and efficiency of most operations. in developement by Microsoft.
  • git-annex - allow managing large binaries among machines, as if operation a normal git repository. possible to creates a synchronised folder with git-annex assistant.