is for Emacs support of Git, the distributed version control system. Emacs `version-control` feature supports many systems besides Git. Additional extensions, such as `Magit`, also provide extensive Git support. Therefore use additional tags besides `git` for Git related questions.
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.
There are many resources and tutorials available free online for Git beginners; see the bottom of this page for links to some of these resources.
Characteristics
- 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 structures
External Links
- Pro Git by Scott Chacon (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 Reference
- 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
man git
,git <command> --help
, orgit 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
Internal Links
Installation/Setup
- How to install Git
- How do you set up Git? Try to cover Linux, Windows, Mac, think 'client/server' mindset.
- Setup 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
- 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?
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?
- Git workflow examples
Git Clients
- msysgit - Cross platform, included with Git
- gitk - Cross platform history viewer, included with Git
- gitnub - Mac OS X
- gitx - Mac OS X 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 Mac
- posh-git - A Windows PowerShell environment for Git
Any other common tasks a beginner should know?
Other Git beginner's references
- Git guide
- Pro Git - book by Scott Chacon
- Git magic
- GitHub video guides
- GitHub guides
- Git - SVN Crash Course
- Git from the bottom up
- Git ready
- Git visual cheatsheet
- Githug
- tryGit
- A Visual Git Reference
- Think Like (a) Git
- Atlassian Git Tutorials and Traning
- Git for the Lazy
- Learn Git Branch - Interactive Tutorial