Git is an open-source distributed version control system (dvcs) with an emphasis on speed. git was initially designed and developed by Linus Torvalds for linux kernel development, now it is maintained by Junio Hamano.
Every Git working directory contains a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server.
The latest stable version is 2.32.0, released on 6 June, 2021.
- Strong support for non-linear development
- Distributed development
- Compatibility with existing systems/protocols
- Efficient handling of large projects
- Cryptographic authentication of history
- Toolkit-based design
- Pluggable merge strategies
- Garbage accumulates unless collected
- Periodic explicit object packing
- Data Assurance
- Pro Git by Scott Chacon and Ben Straub (free)
- Recommended chapters for beginners: 1-3, 6-6.5.
- Git Pocket Guide (free)
- Official Git Tutorial
- Official Git Wiki
- Jan Krüger's mirror of the official Git documentation.
- This is currently the most complete, comprehensive, and up-to-date online version of the Git documentation.
- Git Documentation Source Code
- This is guaranteed to be up-to-date, and have the most readable formatting.
- You can also view these docs using
git <command> --help, or
git help <command>.
- Official Git user manual (may be outdated)
- Git-SCM documentation
- A simplified, but more up-to-date, copy of the official reference. Not all documentation is entirely and properly rendered, however.
- Git source code
- Git source code mirror on GitHub
- Git Wikipedia Article
- A Visual Git Reference
- Git-SCM Blog
- Atlassian Git Tutorials and Traning
- Git for Computer Scientists
- How to install Git
- Set up a Git Server with Msysgit on Windows
- How do you create a new project/repository?
- How do you configure it to ignore files (.obj, .user, etc) that are not really part of the codebase?
Working with the code
- Tour of everyday commands
- How do you get the latest code?
- How do you check out code?
- How do you commit changes?
- How do you see what's uncommitted, or the status of your current codebase?
- How do you destroy unwanted commits?
- How do you compare two revisions of a file, or your current file and a previous revision?
- How do you see the history of revisions to a file?
- How do you undo (revert or reset) a commit?
- How to skip the commit message step in "git commit --amend"?
Tagging, branching, releases, baselines
- How do you 'mark', 'tag' or 'release' a particular set of revisions for a particular set of files so you can always pull that one later?
- How do you branch?
- How do you merge branches?
- What is rebasing?
- How do I track remote branches?
- How can I create a branch on a remote repository?
- How do I delete a branch on a remote repository?
- How do I get information about my current branch and recent commands?
- Git workflow examples
- msysgit - Cross platform, included with Git
- gitk - Cross platform history viewer, included with Git
- RepoZ - Zero-effort repository hub to track and access local Git repositories for Windows and macOS
- gitnub - macOS
- gitx - macOS history viewer
- smartgit - Cross platform, commercial, beta
- tig - console GUI for Linux
- qgit - GUI for Windows, Linux
- Git Extensions - package for Windows, includes friendly GUI
- SourceTree - A free Git & Mercurial client for Windows or macOS
- posh-git - A Windows PowerShell environment for Git
- TortoiseGit - A Windows Explorer extension with overlay icons representing the file statuses in explorer
- GitKraken - A fancy, cross-platform Git client
Clients that are primarily used for GitHub but also support Git
Other Git beginner's references
- Git guide
- Git magic
- GitHub video guides
- GitHub guides
- Git - SVN Crash Course
- Git ready
- Git visual cheatsheet
- A Visual Git Reference
- Think Like (a) Git
- Learn Git Branching - Interactive Tutorial
- Git Immersion labs
- Learn Git in a Month of Lunches
- Git from the inside out
Free Git hosting
- BitBucket bitbucket : Unlimited repositories, maximum 5 collaborators per repository
- GitLab gitlab : Self hosted, unlimited everything
- GitHub github : Unlimited public or private repositories and collaborators
- Azure Repos azure-devops : Private Git repositories, unlimited and hosted in the cloud
git-flow gitignore gitconfig
The Stack Overflow
git chat is useful for coordinating work within this tag, and perhaps occasionally for getting quick help (though no guarantees can be made; attendance is spotty).