title: Git for beginners: The definitive practical guide
body: <p>Ok, after seeing <a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/2678236#2678236">this post by PJ Hyett</a>, I have decided to skip to the end and go with <a href="http://en.wikipedia.org/wiki/Git_(software)" rel="nofollow noreferrer">Git</a>.</p>
  
  <p>So what I need is a beginner's <strong>practical</strong> guide to Git.  "Beginner" being defined as someone who knows how to handle their compiler, understands to some level what a <a href="http://en.wikipedia.org/wiki/Make_%28software%29" rel="nofollow noreferrer">Makefile</a> is, and has touched source control without understanding it very well.</p>
  
  <p>"Practical" being defined as this person doesn't want to get into great detail regarding what Git is doing in the background, and doesn't even care (or know) that it's distributed.  Your answers might hint at the possibilities, but try to aim for the beginner that wants to keep a 'main' repository on a 'server' which is backed up and secure, and treat their local repository as merely a 'client' resource.</p>
  
  <p>So:</p>
  
  <h2>Installation/Setup</h2>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323764">How to install Git</a></li>
  <li>How do you set up Git?  Try to cover Linux, Windows, Mac, think 'client/server' mindset.
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/1482824/setup-git-server-with-msysgit-on-windows">Setup GIT Server with Msysgit on Windows</a></li>
  </ul></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#320140">How do you create a new project/repository?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#316062">How do you configure it to ignore files (.obj, .user, etc) that are not really part of the codebase?</a></li>
  </ul>
  
  <h2>Working with the code</h2>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/1350157#1350157">How do you get the latest code?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323906">How do you check out code?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#316055">How do you commit changes?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#319465">How do you see what's uncommitted, or the status of your current codebase?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323898">How do you destroy unwanted commits?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/1762631#1762631">How do you compare two revisions of a file, or your current file and a previous revision?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/2114836#2114836">How do you see the history of revisions to a file?</a></li>
  <li>How do you handle binary files (visio docs, for instance, or compiler environments)?</li>
  <li>How do you merge files changed at the "same time"?</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/323898#323898">How do you undo (revert or reset) a commit?</a></li>
  </ul>
  
  <h2>Tagging, branching, releases, baselines</h2>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#322967">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?</a></li>
  <li>How do you pull a particular 'release'?</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/816614#816614">How do you branch?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/816636#816636">How do you merge branches?</a></li>
  <li>How do you resolve conflicts and complete the merge?</li>
  <li>How do you merge parts of one branch into another branch?</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/5985070#5985070">What is rebasing?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/1590791#1590791">How do I track remote branches?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/1590803#1590803">How can I create a branch on a remote repository?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/5977604#5977604">How do I delete a branch on a remote repository?</a></li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/5968622#5968622">Git workflow examples</a></li>
  </ul>
  
  <h2>Other</h2>
  
  <ul>
  <li>Describe and link to a good GUI, IDE plugin, etc. that makes Git a non-command line resource, but please list its limitations as well as its good.
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323559">msysgit</a> - Cross platform, included with Git</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323559">gitk</a> - Cross platform history viewer, included with Git</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323559">gitnub</a> - Mac OS X</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323559">gitx</a> - Mac OS X history viewer</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323559">smartgit</a> - Cross platform, commercial, beta</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/322989#322989">tig</a> - console GUI for Linux</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/644129#644129">qgit</a> - GUI for Windows, Linux</li>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide#323559">Git Extensions</a> - package for Windows, includes friendly GUI</li>
  </ul></li>
  <li>Any other common tasks a beginner should know?
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/319465#319465">Git Status tells you what you just did, what branch you have, and other useful information</a></li>
  </ul></li>
  <li>How do I work effectively with a subversion repository set as my source control source?</li>
  </ul>
  
  <h2>Other Git beginner's references</h2>
  
  <ul>
  <li><a href="http://www.sourcemage.org/Git_Guide" rel="nofollow noreferrer">Git guide</a></li>
  <li><a href="http://book.git-scm.com/" rel="nofollow noreferrer">Git book</a></li>
  <li><a href="http://www-cs-students.stanford.edu/~blynn/gitmagic/" rel="nofollow noreferrer">Git magic</a></li>
  <li><a href="http://www.gitcasts.com/" rel="nofollow noreferrer">gitcasts</a></li>
  <li><a href="http://github.com/guides/home" rel="nofollow noreferrer">GitHub guides</a></li>
  <li><a href="http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html" rel="nofollow noreferrer">Git tutorial</a></li>
  <li><a href="http://progit.org/book" rel="nofollow noreferrer">Progit - book by Scott Chacon</a></li>
  <li><a href="http://git.or.cz/course/svn.html" rel="nofollow noreferrer" title="Git - SVN Crash Course">Git - SVN Crash Course</a></li>
  <li><a href="http://www.newartisans.com/2008/04/git-from-the-bottom-up.html" rel="nofollow noreferrer">Git from the bottom up</a></li>
  <li><a href="http://www.gitready.com" rel="nofollow noreferrer">Git ready</a></li>
  <li><a href="http://gitref.org/" rel="nofollow noreferrer">gitref.org</a></li>
  <li><a href="http://www.ndpsoftware.com/git-cheatsheet.html" rel="nofollow noreferrer">Git visual cheatsheet</a></li>
  </ul>
  
  <h2>Delving into Git</h2>
  
  <ul>
  <li><a href="http://www.eecs.harvard.edu/~cduan/technical/git/" rel="nofollow noreferrer">Understanding Git conceptually</a></li>
  <li><a href="http://eagain.net/articles/git-for-computer-scientists/" rel="nofollow noreferrer">Git for computer scientists</a> (and <a href="http://sitaramc.github.com/gcs/" rel="nofollow noreferrer">another version</a>) </li>
  </ul>
  
  <p>I will go through the entries from time to time and 'tidy' them up so they have a consistent look/feel and it's easy to scan the list - feel free to follow a simple "header - brief explanation - list of instructions - gotchas and extra info" template.  I'll also link to the entries from the bullet list above so it's easy to find them later.</p>