Awesome Git

Awesome Git
A curated list of amazingly awesome Git tools, resources and shiny things.
1. Save Your Work (Optional)
If you have uncommitted changes in the up
branch, stash them to avoid losing work:
git stash
2. Update the default
Branch
default
BranchSwitch to the default
branch and bring it up to date:
git checkout default
git pull origin default
This will pull the latest changes from the remote default
branch into your local default
branch.
3. Reconcile Diverging Branches
If you need to merge changes from default
into up
, switch to the up
branch and merge:
git checkout up
git merge default
If there are merge conflicts, Git will prompt you to resolve them manually. Once resolved, continue with:
git add .
git commit -m "Resolved merge conflicts"
4. Push Changes to up
(Optional)
up
(Optional)If you’ve updated the up
branch and want to push it to the remote repository:
git push origin up
5. Fix Force Push Error
If you’re trying to push to main
but it doesn’t exist locally or remotely, confirm the branch name:
git branch -r
If main
exists remotely but not locally, fetch and check it out:
git fetch origin
git checkout main
Then push changes:
git push origin main
If main
does not exist and you’re using default
as the main branch, continue using default
.
6. Remove Cached Files
If you still need to run git rm --cached .
, ensure you specify the -r
flag to remove files recursively:
git rm --cached -r .
This removes all files from the staging area without deleting them from your working directory.
7. Reset and Force Push
If you want to reset the remote branch to your local branch forcibly:
git push origin default --force
Note: Use force-push carefully, as it overwrites the remote branch with your local version.
8. Verify Status
Check your Git status and branch alignment to confirm everything is in sync:
git status
git log --oneline --graph --all
Optional: Automate the Workflow
If this process needs to be automated for recurring updates:
Use a shell script to fetch, merge, and push changes.
Schedule the script using a cron job for automation.
Contributing
Pull requests on interesting tools/projects/resources are welcome.
Table of Contents
Tutorial
There are tons of learning material on the Web
Try Git - learn Git in 15 minutes with pseudo-terminal interface
Atlassian Git Tutorial - comprehensive tutorial on Git
Learn Version Control with Git - freemium ebook from fournova Software (makers for Tower), associated with paid video course
Pro Git - free Git book, also available on paper (CC BY-NC-SA 3.0)
Learn how to use Git - free tutorials and resources to help you learn the basics of Git
The Git Community Book - book built by dozens of people in the Git community
Git Pocket Guide - a short O'Reilly book on Git
Git Real: Code School - paid training course from Code School
Git Branching - visual way to learn git branching
Learn Git in a Month of Lunches - tutorial-based book by Manning Publications
Git Magic - short book about Git
Git from the bottom up - great series of articles about Git
Git-It - Interactive Tutorial App that runs on your Desktop!
Git How To - step by step intro
Migrating to Git LFS - Use Git LFS on an existing repository to manage large files in a better way
Explain Git with D3 - Visualized few basic Git concepts using D3.js: commit, branch, checkout, reset, revert, merge, rebase, fetch, pull, push, tag
Making Sense of Git – A Visual Perspective - Git from a timeline and level perspective and git commands cheatsheet grouped by functionality
The 'Git Pretty' Flow-Chart - How to Recover from a Mess
The Git Parable - GitHub Cofounder's Narrative-style Intro to Git Concepts
Intermediate Git - lower-level, more structural explanation of git concepts
Fork and Pull Request Workflow - Very nicely explained, simple and crisp way of understanding git fork and pull request workflow.
Git School Dude - It's a YouTube channel with a lot of great git videos. It covers everything from the basics to advanced Git topics.
A Git Choose Your Own Adventure - I never found a git tutorial I didn't understand while doing it. Just sometimes those tutorials didn't line up very well with my actual work. This git help in the form of a choose your own adventure was a life saver when I was first starting out.
On undoing, fixing, or removing commits in git - fairly comprehensive guide to recovering from what you did not mean to do when using git
Deconstructing a git commit - A blog explaining how git creates and stores commit histories.
Flight rules for Git - guide about what to do when things go wrong
Use gitk to understand git - all important Git terms (commit, commit SHA, branch, merge, rebase) explained using gitk
Git Cherry-pick and its usages - A blog explaining how command git cherry-pick works.
The ultimate guide to
.gitignore
All about.gitignore
.No Bullsh*t Git - free and complete explanation of git internals and the
.git/
directory.
Style Guide
Style guide when you work with git
Client
Git clients are available on every platform, from mainframe to your mobile device
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
GitKraken - a cross Git client for Windows, Mac & Linux. Electron based. Free for non-commercial use and paid Pro version is available.
Fork - An awesome and free git client for macOS and Windows
TortoiseGit - an easy-to-use Git client on Windows. well-integrated with Windows Explorer.
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.
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
CLIMagit - A Git porcelain inside Emacs
Vershd - a free for personal use effortless Git GUI for Windows, Mac, & Linux.
lazygit - A simple terminal UI for git commands, written in Go
Gittyup - a graphical Git client designed to help you understand and manage your source code history.
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.
Awesome GitHub - Resources & Learning for GitHub
BitBucket - well-known for its free private repository (5 user max).
Jetbrains Space - Jetbrains all-in-one solution for software teams, with IM, ticket tracking, source control.
GitLab.com - a free Git repository hosting service served by GitLab EE. Unlimited repositories and private collaborators
Azure DevOps - cloud service for software development formerly known as Visual Studio Team Services, Visual Studio Online and Team Foundation Service Preview
AWS CodeCommit - a SaaS service provided by Amazon Web Service on high availability infrastructure
Kiln - paid Git repository hosting service
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).
Gogs - a self-hosted Git Service written in Go.
Gitea - a community managed fork of Gogs, lightweight code hosting solution written in Go.
onedev - Self-hosted Git Server with Kanban and CI/CD
GitBucket - a GitHub clone powered by Scala.
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
Effective June 1, 2021: Phabricator is no longer actively maintained.*
RhodeCode CE/EE - a platform delivering enterprise source code management
Soft Serve - a tasty, self-hostable Git server for the command line
Workflow
Inexpensive branching allows people adopt workflows other than the classic centralized workflow
Comparing workflows
No single workflow fits everyone's need
Gitflow - the most well-known Git workflow model
GitHub flow - a simple branching model with a single master
Agit-flow - Inspired by Gerrit workflow, Agit-flow is a centralized git workflow and used in Alibaba’s internal source code platform
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.
husky - modern native Git hooks made easy.
Overcommit - a extendable Git hook manager written with Ruby.
lefthook - fast and powerful Git hooks manager for any type of project.
Mookme - A simple and easy-to-use, yet powerful and language agnostic git hook for monorepos.
quickhook - a fast, Unix'y, opinionated Git hook runner.
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
multi-gitter - a tool to make changes in multiple repositories simultaneously
gitwalk - Bulk processing of git repos
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.
gickup - Backup repos from various hosters to local or other hosters.
git-absorb -
git commit --fixup
, but automaticjc --git-log - Convert your git log to JSON.
gitbackup - a tool to backup your Bitbucket, GitHub and GitLab repositories.
soba - scheduled backups of repositories from popular providers with change detection.
tig - text-mode interface for git.
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.
Last updated