<?xml version="1.0" encoding="UTF-8"?>
<guides type="array">
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/key-setup-redirect/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/key-setup-redirect/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-01-27T16:08:37-08:00</created-at>
    <id type="integer">1</id>
    <permalink>providing-your-ssh-key</permalink>
    <title>Providing your SSH Key</title>
    <updated-at type="datetime">2009-09-03T20:59:17-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>          &lt;h2&gt;Changing Your Origin&lt;/h2&gt;
          
          &lt;p&gt;If you were hosting your Git repo somewhere else before switching over to GitHub, you will need to change your origin so pushes will go to the new repo.&lt;/p&gt;

  &lt;h2&gt;Changing from repo.or.cz&lt;/h2&gt;

  &lt;p&gt;Many people might be coming from another popular public repository, &lt;code&gt;repo.or.cz&lt;/code&gt;, so we'll use that as an example. &lt;/p&gt;

&lt;p&gt; You will need to edit your &lt;code&gt;.git/config&lt;/code&gt; file to change the &lt;code&gt;url&lt;/code&gt; variable to be the new repo.  Where it used to be something like this:&lt;/p&gt;

&lt;pre&gt;
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote &quot;origin&quot;]
        url = git+ssh://repo.or.cz/srv/git/myproject.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        push = refs/heads/master:refs/heads/master
&lt;/pre&gt;

&lt;p&gt;You will now have to change it to something like this:&lt;/p&gt;

&lt;pre&gt;
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote &quot;origin&quot;]
        url = git@github.com:username/myproject.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        push = refs/heads/master:refs/heads/master
&lt;/pre&gt;

&lt;h2&gt;Multi-Origin&lt;/h2&gt;

&lt;p&gt;'origin' is just a default name, there is no actual reason to use it - anything else can be used just as easily.  In fact, it's often helpful to have many remotes that you can push to and/or pull from.  Here is an alternate &lt;code&gt;.git/config&lt;/code&gt; file that will allow you to push to either github or repo.or.cz as you wish. &lt;/p&gt;

&lt;pre&gt;
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote &quot;public&quot;]
        url = git+ssh://repo.or.cz/srv/git/myproject.git
        fetch = +refs/heads/*:refs/remotes/public/*
        push = refs/heads/master:refs/heads/master
[remote &quot;github&quot;]
        url = git@github.com:username/myproject.git
        fetch = +refs/heads/*:refs/remotes/github/*
        push = refs/heads/*:refs/heads/*
&lt;/pre&gt;     

&lt;p&gt;That will allow you to run this command to push to your repo.or.cz account:&lt;/p&gt;

&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;~&lt;/span&gt;: git push public&lt;/pre&gt;

&lt;p&gt;And this to push to your github account:&lt;/p&gt;

&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;~&lt;/span&gt;: git push github&lt;/pre&gt;</body>
    <created-at type="datetime">2008-01-27T17:00:30-08:00</created-at>
    <id type="integer">2</id>
    <permalink>changing-your-origin</permalink>
    <title>Changing Your Origin</title>
    <updated-at type="datetime">2008-07-27T13:32:41-07:00</updated-at>
    <user-id type="integer">17276</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;Git/Rails Screencast&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vimeo.com/369095&quot;&gt;Git with Rails Tutorial&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://peepcode.com/products/git&quot;&gt;PeepCode screencast&lt;/a&gt;, naturally, is also high quality (though for a fee).&lt;/p&gt;
&lt;p&gt;Pragmatic Programmers offer the &lt;a href=&quot;http://www.pragprog.com/screencasts/v-scgithub/insider-guide-to&quot;&gt;Insider Guide to Github&lt;/a&gt;-&lt;br /&gt;
&lt;a href=&quot;http://railscasts.com/episodes/96&quot;&gt;Git on Rails&lt;/a&gt; is a good introduction from Railscasts.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.gitcasts.com/&quot;&gt;GitCasts&lt;/a&gt;, if you like Railscasts, you&amp;#8217;ll love this one too.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.teachmetocode.com/screencasts/5&quot;&gt;Getting Started with GitHub&lt;/a&gt;, walks through a basic first-run using GitHub via &lt;a href=&quot;http://www.teachmetocode.com&quot;&gt;TeachMeToCode.com&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Git/Django Screencast&lt;/h2&gt;
&lt;p&gt;Django more your style?  Check out &lt;a href=&quot;http://oebfare.com/blog/2008/jan/23/using-git-django-screencast/&quot;&gt;Brian Rosner&amp;#8217;s Git/Django screencast&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Google TechTalks&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://video.google.com/videoplay?docid=-2199332044603874737&quot;&gt;2007-05-04 &amp;#8211; Linus Torvalds on Git&lt;/a&gt; (Linus talks mainly about what Git is &lt;span class=&quot;caps&quot;&gt;NOT&lt;/span&gt; as well as underlying general concepts such as distribution and integrity; he also shoots a lot of flames at developers and users of other &lt;span class=&quot;caps&quot;&gt;SCM&lt;/span&gt; systems that he considers inferior. It is an entertaining talk.)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://video.google.com/videoplay?docid=-3999952944619245780&quot;&gt;2007-10-12 &amp;#8211; Randal Schwartz on Git&lt;/a&gt; (A good overview about what Git does and why it&amp;#8217;s better than most other &lt;span class=&quot;caps&quot;&gt;SCM&lt;/span&gt; systems; the specifics on how to use it get a bit lost because Randal is running out of time towards the end.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Grails And Git QuickCast&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://s3.amazonaws.com/g2onescreencasts/gitGrailsScreencast_web_final_compressed.mov&quot;&gt;G2One Grails And Git QuickCast&lt;/a&gt;, A short (11 minute) video demonstrating how Grails and Git can work together to support a really agile development process.  This should be of general interest also, it is not very specific to Grails.&lt;/p&gt;</body>
    <created-at type="datetime">2008-01-28T04:07:49-08:00</created-at>
    <id type="integer">4</id>
    <permalink>git-screencasts</permalink>
    <title>Git Screencasts</title>
    <updated-at type="datetime">2009-09-20T08:16:32-07:00</updated-at>
    <user-id type="integer">127266</user-id>
  </guide>
  <guide>
    <body>
&lt;h4&gt;Basics&lt;/h4&gt;
&lt;p&gt;To prepare your project for Capistrano, go into the root directory of that project and type&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
capify .
&lt;/pre&gt;

&lt;h4&gt;Generate Public Key&lt;/h4&gt;
&lt;p&gt;It would probably be a good idea to add a special user on your server(s) specifically for deployment.  Once created, make sure to generate a public key for that SOB (see &lt;a href=&quot;http://github.com/guides/providing-your-ssh-key&quot;&gt;Providing Your SSH Key&lt;/a&gt; ), and add it to your github account. You may also want to add your personal public key to this new user's &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt; to ease deployment.&lt;/p&gt;  

&lt;p&gt;N.B. GitHub doesn't allow the same public key to be assigned to more than one account. If you would like multiple users to be able to deploy from the same repo you'll probably want to add the deployer's public key as a  Deploy Key for the repo in question. To do this make sure you're logged into GitHub as the repo administrator, edit the repo and go to the Admin tab. There you'll be able to add the deploy key.  &lt;/p&gt;

&lt;h4&gt;Settings&lt;/h4&gt;
&lt;p&gt;Now for the fun part, configuring &lt;a href=&quot;http://www.capify.org/&quot;&gt;Capistrano&lt;/a&gt;.  Here are the 5 most notable Capistrano config options (found in deploy.rb):&lt;/p&gt;

&lt;pre class=&quot;console&quot;&gt;
default_run_options[&lt;span&gt;:pty&lt;/span&gt;] = &lt;span class=&quot;command&quot;&gt;true&lt;/span&gt;
set :repository,  &lt;span class=&quot;command&quot;&gt;&quot;git@github.com:vanpelt/rails-app.git&quot;&lt;/span&gt;
set :scm, &lt;span class=&quot;command&quot;&gt;&quot;git&quot;&lt;/span&gt;
set :scm_passphrase,&lt;span class=&quot;command&quot;&gt; &quot;p@ssw0rd&quot;&lt;/span&gt; &lt;span&gt;#This is your custom users password&lt;/span&gt;
set :user, &lt;span class=&quot;command&quot;&gt;&quot;deployer&quot;&lt;/span&gt;
&lt;/pre&gt;

&lt;p&gt;We need to turn on the &lt;code&gt;:pty&lt;/code&gt; option because it would seem we don't get the passphrase prompt from git if we don't.  Point the &lt;code&gt;:repository&lt;/code&gt; option to your github clone URL.  Set the &lt;code&gt;:passphrase&lt;/code&gt; to the one you generated in the initial step, and set &lt;code&gt;:user&lt;/code&gt; to the one you just created.&lt;/p&gt;

&lt;p&gt;If you're using your own private keys for git you might want to tell Capistrano to use agent forwarding with this command&lt;/p&gt;

&lt;pre class=&quot;console&quot;&gt;
ssh_options[&lt;span&gt;:forward_agent&lt;/span&gt;] = &lt;span class=&quot;command&quot;&gt;true&lt;/span&gt;
&lt;/pre&gt;

&lt;h4&gt;Set Branch&lt;/h4&gt;

&lt;pre class=&quot;console&quot;&gt;set :branch, &quot;origin/master&quot;&lt;/pre&gt;

Or use the following line for newer versions of Capistrano:

&lt;pre class=&quot;console&quot;&gt;set :branch, &quot;master&quot;&lt;/pre&gt;

&lt;p&gt;This will specify the branch that gets checked out for the deployment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Older versions of git (e.g. 1.4.4.2) don't support -q on git checkout command. This will cause your deployment to fail by default. To fix either upgrade git or do:

&lt;code&gt;
set :scm_verbose, true
&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;You may also wish to use one of the following options if your git repo is very large - otherwise each deploy will do a full repository clone every time.&lt;/p&gt;

&lt;h4&gt;Remote Cache&lt;/h4&gt;
&lt;pre class=&quot;console&quot;&gt;set :deploy_via, &lt;span class=&quot;command&quot;&gt;:remote_cache&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt; Remote caching will keep a local git repo on the server you're deploying to and simply run a fetch from that rather than an entire clone.  This is probably the best option and will only fetch the differences each deploy&lt;/p&gt;

&lt;h4&gt;Shallow Clone&lt;/h4&gt;
&lt;pre class=&quot;console&quot;&gt;set :git_shallow_clone, &lt;span class=&quot;command&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt; Shallow cloning will do a clone each time, but will only get the first tree, not all the parents trees, too.  This makes it a bit closer to how an svn checkout works, but be careful when using with the &lt;code&gt;set :branch&lt;/code&gt; option, because it wont work unless the shallow clone number is big enough to encompass the branch you've specified.&lt;/p&gt;

&lt;h4&gt;Submodules&lt;/h4&gt;
&lt;pre class=&quot;console&quot;&gt;set :git_enable_submodules, &lt;span class=&quot;command&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt; If you're using git's submodule support for edge rails or merb, set this guy to make sure the submodules &quot;git&quot; checked out.&lt;/p&gt;

&lt;p&gt;That's it folks, easy as pie.&lt;/p&gt;

&lt;h4&gt;Migrating from SVN&lt;/h4&gt;

&lt;p&gt;
Migrating from SVN-based deploys?  &lt;a href=&quot;http://groups.google.com/group/github/browse_frm/thread/c5d2620c541e4e1a&quot;&gt;Check this thread&lt;/a&gt; if you run into any problems.
&lt;/p&gt;

&lt;h4&gt;Known Hosts List&lt;/h4&gt;

&lt;p&gt;Note: the first time I tried to deploy, I got a failure, apparently because Capistrano wasn't prompting with this message:&lt;/p&gt;

&lt;pre class=&quot;console&quot;&gt;
The authenticity of host 'github.com (65.74.177.129)' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,65.74.177.129' (RSA) to the list of known hosts.
&lt;/pre&gt;

&lt;p&gt;So I opened up a terminal separate from Capistrano and pulled my repo, added github.com to the list of known hosts.  My next Cap deploy worked.&lt;/p&gt;
</body>
    <created-at type="datetime">2008-01-29T11:21:12-08:00</created-at>
    <id type="integer">5</id>
    <permalink>deploying-with-capistrano</permalink>
    <title>Deploying with Capistrano</title>
    <updated-at type="datetime">2009-06-27T15:38:00-07:00</updated-at>
    <user-id type="integer">92120</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Got an idea?  Use the &lt;a href=&quot;http://github.com/contact&quot;&gt;contact form&lt;/a&gt; or &lt;a href=&quot;http://support.github.com/&quot;&gt;the support site&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Looking for help?  Try #github in irc.freenode.net or the &lt;a href=&quot;http://groups.google.com/group/github/&quot;&gt;Google Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Find a bug?  Use the &lt;a href=&quot;http://github.com/contact&quot;&gt;contact form&lt;/a&gt; or &lt;a href=&quot;http://support.github.com/&quot;&gt;the support site&lt;/a&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-01-31T10:41:38-08:00</created-at>
    <id type="integer">7</id>
    <permalink>feature-requests</permalink>
    <title>Feature Requests</title>
    <updated-at type="datetime">2008-12-03T19:56:28-08:00</updated-at>
    <user-id type="integer">22282</user-id>
  </guide>
  <guide>
    <body>&lt;h3&gt;Gitsplosion Podcast &amp;#8211; links from &lt;a href=&quot;http://github.com/blog/&quot;&gt;GitHub blog&lt;/a&gt; , &lt;a href=&quot;http://feeds.feedburner.com/github&quot;&gt;iTunes xml etc feed here&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://tinyurl.com/6gj3ma&quot;&gt;2008-06-24 &amp;#8211; Gitsplosion! in iTunes&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/blog/95-gitsplosion-2&quot;&gt;2008-06-20 &amp;#8211; Gitsplosion #2&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/blog/86-gitsplosion&quot;&gt;2008-06-12 &amp;#8211; Gitsplosion #1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;GitCasts &amp;#8211; links from &lt;a href=&quot;http://gitcasts.com/&quot;&gt;GitCasts&lt;/a&gt;, &lt;a href=&quot;http://feeds.feedburner.com/GitcastsHighRes&quot;&gt;HighResRSS&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/git-submodules&quot;&gt;2008-06-23 &amp;#8211; Git Submodules&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/git-on-windows&quot;&gt;2008-06-11 &amp;#8211; Git on Windows&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/railsconf-git-talk&quot;&gt;2008-06-06 &amp;#8211; RailsConf Git Talk&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/empty-branches&quot;&gt;2008-06-02 &amp;#8211; Empty Branches&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/distributed-workflow&quot;&gt;2008-05-28 &amp;#8211; Distributed Workflow&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/rebasing&quot;&gt;2008-05-28 &amp;#8211; Rebasing&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/branching-and-merging&quot;&gt;2008-05-28 &amp;#8211; Branching and Merging&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/browsing-git-objects&quot;&gt;2008-05-23 &amp;#8211; Browsing Git Objects&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/git-log&quot;&gt;2008-05-19 &amp;#8211; Git Log&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/interactive-adding&quot;&gt;2008-05-19 &amp;#8211; Interactive Adding&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/normal-workflow&quot;&gt;2008-05-19 &amp;#8211; Normal Workflow&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://gitcasts.com/posts/setup-initialization-and-cloning&quot;&gt;2008-05-19 &amp;#8211; Setup, Initialization and Cloning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Others&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://peepcode.com/products/git&quot;&gt;Git Peepcode&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://podcast.rubyonrails.com/programs/1/episodes/github-and-powerset&quot;&gt;2008-06-13 &amp;#8211; the Ruby on Rails Podcast: GitHub and Powerset&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://web20show.com/episodes/web20show-ep45-github&quot;&gt;2008-06-13 &amp;#8211; The Web 2.0 Show #45: GitHub&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.drunkandretired.com/2008/05/04/episode-123-i-finally-git-it/&quot;&gt;2008-05-04 &amp;#8211; DrunkAndRetired.com #123: I finally git it [with &amp;#8216;KirinDave&amp;#8217;]&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.drunkandretired.com/2008/04/17/episode-122-git-it-on/&quot;&gt;2008-04-17 &amp;#8211; DrunkAndRetired.com #122: Git it On!&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.hanselminutes.com/default.aspx?showID=126&quot;&gt;2008-04-09 &amp;#8211; Hanselminutes #108: Distributed Source Control with Git&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://railscasts.com/episodes/96&quot;&gt;2008-03-10 &amp;#8211; Railscasts.com #96: Git on Rails&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.michaeltrier.com/2008/2/11/this-week-in-django-10-2008-02-10&quot;&gt;2008-02-10 &amp;#8211; &amp;#8216;This Week in Django&amp;#8217;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://podcast.rubyonrails.com/programs/1/episodes/err-free&quot;&gt;2008-01-30 &amp;#8211; the Ruby on Rails Podcast: Err Free&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://twit.tv/floss19&quot;&gt;2007-08-01 &amp;#8211; &lt;span class=&quot;caps&quot;&gt;FLOSS&lt;/span&gt; Weekly #19: git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-02-11T15:24:45-08:00</created-at>
    <id type="integer">8</id>
    <permalink>git-podcasts</permalink>
    <title>Git Podcasts</title>
    <updated-at type="datetime">2008-07-02T01:21:00-07:00</updated-at>
    <user-id type="integer">2720</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Got an idea?  Use the &lt;a href=&quot;http://github.com/contact&quot;&gt;contact form&lt;/a&gt; or &lt;a href=&quot;http://support.github.com/&quot;&gt;the support site&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Looking for help?  Try #github in irc.freenode.net or the &lt;a href=&quot;http://groups.google.com/group/github/&quot;&gt;Google Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Find a bug?  Use the &lt;a href=&quot;http://github.com/contact&quot;&gt;contact form&lt;/a&gt; or &lt;a href=&quot;http://support.github.com/&quot;&gt;the support site&lt;/a&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-02-12T12:23:25-08:00</created-at>
    <id type="integer">9</id>
    <permalink>github-bugs</permalink>
    <title>GitHub Bugs!</title>
    <updated-at type="datetime">2008-12-03T23:02:44-08:00</updated-at>
    <user-id type="integer">2</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;If you&amp;#8217;re experiencing this problem on &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt;, it&amp;#8217;s likely caused by your MacPorts version of git. Macports compiles its packages&amp;#8217; source code after downloading standard source tarballs and running a MacPorts-specific patch against them. The git binary has been patched to use MacPorts&amp;#8217; own version of ssh (irrespective of your &lt;code&gt;$PATH&lt;/code&gt; matching the &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt; binaries) which, in turn, blows up git with the &amp;#8220;fatal error&amp;#8221;.&lt;/p&gt;
&lt;p&gt;The solution is to simply rename the &lt;code&gt;/opt/local/bin/ssh&lt;/code&gt; and &lt;code&gt;/opt/local/bin/scp&lt;/code&gt; binaries and then replace them with a symlink which points to the &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt;-supplied version.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s how:&lt;/p&gt;
&lt;p&gt;&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; sudo -s &lt;span&gt;# To get a root prompt&lt;/span&gt;
&lt;span&gt;$&lt;/span&gt; cd /opt/local/bin
&lt;span&gt;$&lt;/span&gt; mv ssh{,_macports}
&lt;span&gt;$&lt;/span&gt; mv scp{,_macports}
&lt;span&gt;$&lt;/span&gt; ln -s /usr/bin/ssh ssh
&lt;span&gt;$&lt;/span&gt; ln -s /usr/bin/scp scp&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; sudo -s &lt;span&gt;# To get a root prompt&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;$&lt;/span&gt; cd /opt/local/bin&lt;br /&gt;
&lt;span&gt;$&lt;/span&gt; mv ssh{,&lt;em&gt;macports}&lt;br /&gt;
&lt;span&gt;$&lt;/span&gt; mv scp{,&lt;/em&gt;macports}&lt;br /&gt;
&lt;span&gt;$&lt;/span&gt; ln -s /usr/bin/ssh ssh&lt;br /&gt;
&lt;span&gt;$&lt;/span&gt; ln -s /usr/bin/scp scp&lt;/pre&gt;&lt;br /&gt;
&lt;notextile&gt;&lt;/p&gt;
&lt;p&gt;This should fix it.  Thanks to Jay Phillips for figuring this out.&lt;/p&gt;
&lt;p&gt;Note that this can also be fixed by specifying the IdentifyFile in your .ssh/config (see &lt;a href=&quot;http://www.nabble.com/ssh%3A-percent_expand%3A-NULL-replacement-td13439207.html&quot;&gt;here&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;p&gt;The &quot;openssh 5.0p1_0+darwin_9&quot; macport should solve the problem.  Use the following commands to update OpenSSH:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; sudo port selfupdate
&lt;span&gt;$&lt;/span&gt; sudo port upgrade openssh
&lt;/pre&gt;
&lt;br /&gt;
&lt;p&gt;The &amp;#8220;openssh 5.0p1_0+darwin_9&amp;#8221; macport should solve the problem.  Use the following commands to update OpenSSH:&lt;/p&gt;&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
&lt;span&gt;$&lt;/span&gt; sudo port selfupdate&lt;br /&gt;
&lt;span&gt;$&lt;/span&gt; sudo port upgrade openssh&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;notextile&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;For those of us who compiled git from source, I got this error with git 1.5.6.4, but it went away when I upgraded to 1.6.0.&lt;/p&gt;</body>
    <created-at type="datetime">2008-02-13T12:22:11-08:00</created-at>
    <id type="integer">10</id>
    <permalink>percent_expand-null-replacement-bug</permalink>
    <title>'percent_expand: NULL replacement' Bug</title>
    <updated-at type="datetime">2008-12-19T07:33:38-08:00</updated-at>
    <user-id type="integer">18606</user-id>
  </guide>
  <guide>
    <body>&lt;h1&gt;Let GitHub do it for you&lt;/h1&gt;
&lt;p&gt;GitHub can directly import &lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt; projects. All you&amp;#8217;ll need is the repository &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;. More details are in the &lt;a href=&quot;http://github.com/blog/156-subversion-importing&quot;&gt;blog article&lt;/a&gt; that introduced the feature. Note: GitHub does not keep imported projects synchronized with the &lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt; repo.&lt;/p&gt;
&lt;h1&gt;Do it yourself&lt;/h1&gt;
&lt;h2&gt;svn2git&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://github.com/nirvdrum/svn2git&quot;&gt;svn2git&lt;/a&gt; is designed to provide a complete svn import.  Unlike git-svn, it will create proper git tags from your svn &amp;#8220;tags&amp;#8221;. Note: The current version of svn2git has GitHub support removed.&lt;/p&gt;
&lt;h2&gt;git-svn&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-svn.html&quot;&gt;git-svn&lt;/a&gt; can be used to import as well.  Note that there may be issues if you have branches or tags (they won&amp;#8217;t be imported over).  If you only have a trunk, like many svn repositories, this method should work for you without issue.&lt;/p&gt;
&lt;p&gt;First, be sure to &lt;a href=&quot;http://github.com/repositories/new&quot;&gt;create your repository on github&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt; $ git svn clone -s SVN_REPO_URL LOCAL_DIR
 $ cd LOCAL_DIR
 $ git remote add origin git@github.com:GITHUB_USERNAME/REPO_NAME.git
 $ git push origin master&lt;/pre&gt;
&lt;p&gt;Note that the -s switch implies that your svn repo is set up with the standard branches / tags / trunk structure.&lt;/p&gt;
&lt;p&gt;git-svn adds a note to every commit message it copies over from svn. To get rid of that note, add &lt;code&gt;--no-metadata&lt;/code&gt; to the git svn clone command&lt;/p&gt;
&lt;p&gt;You can pull in later commits by running &lt;code&gt;git-svn rebase&lt;/code&gt; from within your repo. (If you ever lose your local copy, just run the import again with the same settings, and you&amp;#8217;ll get another working directory with all the necessary &lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt; metainfo.).&lt;/p&gt;
&lt;h3&gt;Author mapping&lt;/h3&gt;
&lt;p&gt;When migrating a Subversion repository to Git, you can map the Subversion users to Git users. You have to create an authors file which contains the mappings:&lt;br /&gt;
&lt;pre&gt;fesplugas = Francesc Esplugas &amp;lt;fesplugas@intra&amp;#8230;.bles.net&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Then clone the subversion repository with the previously created &lt;code&gt;authors-file&lt;/code&gt;:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;$ git svn &amp;#8212;authors-file=/home/fesplugas/.authors clone svn://intraducibles.net/var/svn/rails/plugins/something_fu something_fu&lt;/pre&gt;&lt;/p&gt;
&lt;h2&gt;Other guides&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/&quot;&gt;Guide by Jon Maddox&lt;/a&gt; (doesn&amp;#8217;t deal with branches)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.fnokd.com/2008/08/20/mirroring-svn-repository-to-github&quot;&gt;Guide by  Bob McWhirter&lt;/a&gt; (doesn&amp;#8217;t deal with branches)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.woobling.org/2009/06/git-svn-abandon.html&quot;&gt;Guide by Yuval Kogman&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-02-15T14:36:04-08:00</created-at>
    <id type="integer">11</id>
    <permalink>import-from-subversion</permalink>
    <title>Import from Subversion</title>
    <updated-at type="datetime">2009-10-25T16:48:04-07:00</updated-at>
    <user-id type="integer">5364</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/post-receive-hooks/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/post-receive-hooks/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-02-15T16:33:09-08:00</created-at>
    <id type="integer">12</id>
    <permalink>post-receive-hooks</permalink>
    <title>Post-Receive Hooks</title>
    <updated-at type="datetime">2009-10-16T19:45:35-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This quick help will show you how to get a copy of your github repo down to a local computer. This would be a complete new copy, or &lt;b&gt;clone&lt;/b&gt;.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/guides/providing-your-ssh-key&quot;&gt;Add your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; key&lt;/a&gt; (and make sure ssh is &lt;a href=&quot;http://github.com/guides/addressing-authentication-problems-with-ssh&quot;&gt;configured to find your private key&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Copy your &lt;b&gt;Clone &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;&lt;/b&gt; from the repository homepage&lt;/li&gt;
	&lt;li&gt;At the local computer go to directory that you want to contain your code&lt;/li&gt;
	&lt;li&gt;Just enter the single command &lt;code&gt;git clone [clone_url]&lt;/code&gt; where [clone_url] is something like &lt;code&gt;git@github.com:johndoe/myproject.git&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;</body>
    <created-at type="datetime">2008-02-16T22:09:42-08:00</created-at>
    <id type="integer">13</id>
    <permalink>getting-a-copy-of-your-github-repo</permalink>
    <title>Getting a copy of your github repo</title>
    <updated-at type="datetime">2008-09-26T07:30:48-07:00</updated-at>
    <user-id type="integer">9205</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Removing a  branch from your remote repo is a little bit different from removing it locally. It&amp;#8217;s all about the colon:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git push &amp;lt;remote_repo&amp;gt; :heads/&amp;lt;branch&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Example: &lt;code&gt;git push origin :heads/some-branch&lt;/code&gt; removes some-branch from the remote repo (apparently &lt;code&gt;git push origin :some-branch&lt;/code&gt; works as well).&lt;/p&gt;
&lt;p&gt;This works for removing a tag as well: &lt;code&gt;git push origin :sometag&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You might also want to check out &lt;tt&gt;&lt;a href=&quot;http://git-wt-commit.rubyforge.org/&quot;&gt;git-publish-branch&lt;/a&gt;&lt;/tt&gt;&amp;#8216;s &amp;#8217;&lt;tt&gt;-d&lt;/tt&gt;&amp;#8217; option.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;[[Push a branch to github]]&lt;/li&gt;
	&lt;li&gt;[[Copy a remote branch]]&lt;/li&gt;
	&lt;li&gt;[[Rename a remote branch]]&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-02-19T12:47:43-08:00</created-at>
    <id type="integer">15</id>
    <permalink>remove-a-remote-branch</permalink>
    <title>Remove a remote branch</title>
    <updated-at type="datetime">2009-09-22T08:42:38-07:00</updated-at>
    <user-id type="integer">12496</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Pull requests are a way to poke someone and let them know you&amp;#8217;ve got some code they may want.&lt;/p&gt;
&lt;p&gt;They work great when you want to let an upstream maintainer know that you&amp;#8217;ve pushed some useful changes to your fork of their project.&lt;/p&gt;
&lt;p&gt;They also work great if you want to let a fellow developer know that you&amp;#8217;ve pushed some experimental features to an arbitrary branch.&lt;/p&gt;
&lt;h3&gt;Step One&lt;/h3&gt;
&lt;p&gt;First, navigate to your project with the changes you want someone else to pull.  In this instance, I&amp;#8217;m going to go to &lt;a href=&quot;http://github.com/defunkt/grit&quot;&gt;defunkt/grit&lt;/a&gt; and tell mojombo to pull a change.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20080223-xw8wdwkg9abpjtuwu4wutwwcqm.png&quot;/&gt;&lt;/p&gt;
&lt;h3&gt;Step Two&lt;/h3&gt;
&lt;p&gt;I can type in a message if I want and select any number of recipients.  By default, I&amp;#8217;ll see everyone who has a project in my project&amp;#8217;s network.  If I want to add someone else, I can use the autocompleter and click &amp;#8216;add.&amp;#8217;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20080223-1njj3f5559un2eyt51j92t2xkf.png&quot;/&gt;&lt;/p&gt;
&lt;h3&gt;Step Three&lt;/h3&gt;
&lt;p&gt;Sent!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20080223-8jf2dc17cdtibs2jt13ptgxwts.png&quot;/&gt;&lt;/p&gt;
&lt;h3&gt;Step Four&lt;/h3&gt;
&lt;p&gt;When mojombo logs in, he&amp;#8217;ll see that there&amp;#8217;s a new message waiting for him.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20080223-rpgh5c4e1n38wc3e45cacq77ww.png&quot;/&gt;&lt;/p&gt;
&lt;h3&gt;Step Five&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20080223-p9erf1mhepf5gc7jy9kek9rgdn.png&quot;/&gt;&lt;/p&gt;
&lt;p&gt;mojombo can reply to my message, delete it, or ignore it. Pulling from me is easy. mojombo can add the defunkt repository as a remote source and fetch its contents like this:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; git remote add defunkt git://github.com/defunkt/grit.git
&lt;span&gt;$&lt;/span&gt; git fetch defunkt
&lt;/pre&gt;
&lt;p&gt;The &amp;#8216;git remote add&amp;#8217; will stay in your repository configuration, so the next time you get a pull request, you only need to fetch again. Note that to fetch from a private repository, you need to use the private update &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;.  If grit were private for example, the remote add would look like, &amp;#8220;git@github.com:defunkt/grit.git&amp;#8221;.&lt;/p&gt;
&lt;p&gt;To merge the changes done in the defunkt repository to a local branch, e.g., the master branch, you can run&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; git checkout master
&lt;span&gt;$&lt;/span&gt; git merge defunkt/master
&lt;/pre&gt;
&lt;p&gt;You can also use the git-pull helper to do the fetch+merge in one step. This comes in handy for one-shot pulls where you do not want to use the same repository again in the near future:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; git checkout master
&lt;span&gt;$&lt;/span&gt; git pull git://github.com/defunkt/grit.git master
&lt;/pre&gt;
&lt;p&gt;Now that you have merged defunkt/grit&amp;#8217;s master branch, you should probably push your branch to let others see the merge.&lt;/p&gt;</body>
    <created-at type="datetime">2008-02-23T01:31:04-08:00</created-at>
    <id type="integer">16</id>
    <permalink>pull-requests</permalink>
    <title>Pull Requests</title>
    <updated-at type="datetime">2009-11-15T03:39:18-08:00</updated-at>
    <user-id type="integer">153510</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;First Heading should be H2&lt;/h2&gt;
&lt;p&gt;Sometimes I wonder what people have against &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt;. Oh that&amp;#8217;s right.&lt;/p&gt;
&lt;h3&gt;Next heading will obviously be H3&lt;/h3&gt;
&lt;p&gt;Tables are cool when used for tabular data.&lt;/p&gt;
&lt;table&gt;
	&lt;tr&gt;
		&lt;th&gt;Name&lt;/th&gt;
		&lt;th&gt;Age&lt;/th&gt;
		&lt;th&gt;Height&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Tom&lt;/td&gt;
		&lt;td&gt;29&lt;/td&gt;
		&lt;td&gt;5&amp;#8217;9&amp;quot;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Chris&lt;/td&gt;
		&lt;td&gt;27&lt;/td&gt;
		&lt;td&gt;6&amp;#8217;0&amp;quot;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Jimmy&lt;/td&gt;
		&lt;td&gt;93&lt;/td&gt;
		&lt;td&gt;3&amp;#8217;6&amp;quot;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;h4&gt;Pay Attention to my H4&lt;/h4&gt;
&lt;p&gt;You just don&amp;#8217;t see enough ordered lists around these days.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;alpha&lt;/li&gt;
	&lt;li&gt;beta&lt;/li&gt;
	&lt;li&gt;gamma&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unordered lists are nice for when you don&amp;#8217;t want to prioritize things.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;one&lt;/li&gt;
	&lt;li&gt;two&lt;/li&gt;
	&lt;li&gt;three&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;#8217;s always a good idea to quote someone famous so people think you know what you&amp;#8217;re talking about.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To be or not to be, that is the question&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If that doesn&amp;#8217;t work, just fall back on math equations. That&amp;#8217;s sure to work.&lt;/p&gt;
&lt;p&gt;a &lt;sup&gt;2&lt;/sup&gt; + b &lt;sup&gt;2&lt;/sup&gt; = c &lt;sup&gt;2&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Tables are a pain, huh? Just slap in some preformatted content using &amp;lt;pre&amp;gt; tags.&lt;/p&gt;
&lt;pre&gt;size   color
 L       G
 M       R
 S       B&lt;/pre&gt;
&lt;p&gt;This &lt;strong&gt;is&lt;/strong&gt; a code repository so displaying &lt;code&gt;code&lt;/code&gt; should be easy and look good too!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
    def foo
      puts 'bar'
    end
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;
   testing&lt;/pre&gt;
&lt;h2&gt;Sample Header&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;apples
	&lt;ul&gt;
		&lt;li&gt;Granny Smith&lt;/li&gt;
		&lt;li&gt;Pink Lady&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;li&gt;bananas&lt;/li&gt;
	&lt;li&gt;grapes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;del&gt;-config&lt;/del&gt;-&lt;br /&gt;
&lt;del&gt;&amp;#8212;config2&lt;/del&gt;&amp;#8212;&lt;br /&gt;
&lt;em&gt;italic&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;To find out the version number when using RedCloth &amp;gt;= 4.0&lt;/h3&gt;
&lt;p&gt;Use &lt;code&gt;RedCloth::VERSION&lt;/code&gt; on a line all by itself:&lt;/p&gt;
&lt;p&gt;4.2.2&lt;/p&gt;
&lt;p&gt;Or surround it with square brackets in a sentence:&lt;/p&gt;
&lt;p&gt;Github is running 4.2.2.&lt;/p&gt;
&lt;h2&gt;Need more Textile help?&lt;/h2&gt;
&lt;p&gt;Read the &lt;a href=&quot;http://redcloth.org/textile&quot;&gt;reference manual&lt;/a&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-02-24T17:47:22-08:00</created-at>
    <id type="integer">17</id>
    <permalink>textile-formatting</permalink>
    <title>Textile Formatting</title>
    <updated-at type="datetime">2009-11-18T02:01:34-08:00</updated-at>
    <user-id type="integer">10906</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Run this simple command in a local git repository and it will open your browser to the relative github project page (if the repository was cloned from github). Add it to your ~/.bash_profile file.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pastie.caboo.se/158400&quot;&gt;http://pastie.caboo.se/158400&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias github=&quot;open `git config -l | grep 'remote.origin.url' | sed -n 
's/remote.origin.url=git@github.com:\(.*\)\/\(.*\).git/https:\/\/github.com\/\1\/\2/p'`&quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you&amp;#8217;re interested in working on tasty command line nuggets like the one above, please check out the &lt;a href=&quot;http://github.com/defunkt/github-gem&quot;&gt;GitHub gem&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit by savetheclocktower:&lt;/strong&gt; To get this to work, I had to escape the backticks so that the command within the backticks would not be evaluated until each time the alias is run. Without the backslashes, the command runs as soon as the alias is declared, at which time (at least in my case) it fails to find a &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias github=&quot;open \`git config -l | grep 'remote.origin.url' | sed -n
's/remote.origin.url=git@github.com:\(.*\)\/\(.*\).git/https:\/\/github.com\/\1\/\2/p'\`&quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Edit by mkramlich:&lt;/strong&gt; That didn&amp;#8217;t fix it for me either, still broken, but got it closer. I also had to adjust the pattern to match the git &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; syntax actually used in my remote.origin.url value. It now works perfectly for me as originally advertised, like this:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;alias github=&quot;open \`git config -l | grep 'remote.origin.url' | sed -n
 's/remote.origin.url=git:\/\/github.com\/\(.*\)\/\(.*\).git/https:\/\/github.com\/\1\/\2/p'\`&quot;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit by griff:&lt;/strong&gt; Here is one that combines the two above versions and therefore supports both git@github.com and git://github.com urls.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pastie.caboo.se/202275&quot;&gt;http://pastie.caboo.se/202275&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias github=&quot;open \`git config -l | grep 'remote.origin.url' | sed -En \
  's/remote.origin.url=git(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\3\/\4/p'\`&quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Edit by FiXato:&lt;/strong&gt; Here is one that takes griff&amp;#8217;s above version and makes it use &amp;#8216;konqueror&amp;#8217; instead of open (as that command seems to be missing on my system), and runs it backgrounded, with all commandline output surpressed. It also uses &lt;strong&gt;sed -r&lt;/strong&gt; instead of &lt;strong&gt;sed -E&lt;/strong&gt;, as the &lt;strong&gt;-E&lt;/strong&gt; argument was not supported by my version of sed (&amp;#8216;&lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; sed version 4.1.5&amp;#8217;).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias github=&quot;konqueror \`git config -l | grep 'remote.origin.url' | sed -rn \
  's/remote.origin.url=git(@|:\/\/)github.com(:|\/)(.+)\/(.+).git/https:\/\/github.com\/\3\/\4/p'\` &gt; /dev/null 2&gt;&amp;1 &amp;&quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Edit by Leonid Volnitsky:&lt;/strong&gt; Yet another version(shorter and cleaner).  And yes, open is non standard, as is -E (deprecated?):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias github='firefox `git config -l | 
sed -rn &quot;s^remote.origin.url=git(@|://)(github.com)(:|/)(.+/.+).git^https://\2/\4^p&quot;`'&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Clarification by jacaetevha&lt;/strong&gt;: The &lt;strong&gt;open&lt;/strong&gt; command and the &lt;strong&gt;sed -E&lt;/strong&gt; argument are Mac (&lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;) specific.  So, if you want this to work on your Mac, keep them in there.  &lt;strong&gt;open&lt;/strong&gt; is a commandline program to use the default application for the argument passed to it (filename, &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;, etc).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit by jacaetevha&lt;/strong&gt;: Here&amp;#8217;s a version I use at work with a repository that started internally and then we push to Github.  The difference here is that the origin is not Github, so the RegEx needs to account for that.  It also works when Github is the origin.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias github='open `git config -l | grep github | grep url | \
    sed -En &quot;s^(remote.*.url)=git(@|://)(github.com)(:|/)(.+/.+).git^https://\3/\5^p&quot;`'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Edit by ches&lt;/strong&gt;: After much fussing, here&amp;#8217;s my version that will honor the currently active branch, or fall back to &lt;code&gt;master&lt;/code&gt; if there is not a matching remote branch. You cannot actually break the line with backslashes as shown here simply for clarity (I&amp;#8217;d suggest copying from the raw gist). As suggested by others, modify the OS X-specific &lt;code&gt;open&lt;/code&gt; and &lt;code&gt;sed -E&lt;/code&gt; with what is appropriate for you. If you see a simpler way to do this, do share.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gist.github.com/90083&quot;&gt;http://gist.github.com/90083&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;alias github='br=$(git branch --contains HEAD | sed -En &quot;s/^\* //p&quot;); \
    if ! git ls-remote . | grep -q -e &quot;refs/remotes/.*/${br}&quot;; then br=&quot;master&quot;; fi; \
    echo $(git config -l | sed -En &quot;s%remote.origin.url=git(@|://)(github.com)(:|/)(.+/.+).git%https://\2/\4/tree/${br}%p&quot;)'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Edit by ssokolow&lt;/strong&gt;: Thanks to the Portland project, modern Linux has an equivalent to the open command named xdg-open. I&amp;#8217;ve forked ches&amp;#8217;s version of the alias to replace &amp;#8220;open&amp;#8221; with &amp;#8220;xdg-open&amp;#8221; and &amp;#8220;-En&amp;#8221; with &amp;#8220;-rn&amp;#8221;. Due to the linebreaking issues, I&amp;#8217;m just providing a gist link.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://gist.github.com/135000&quot;&gt;http://gist.github.com/135000&lt;/a&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-02-26T20:48:14-08:00</created-at>
    <id type="integer">18</id>
    <permalink>jump-to-github-from-your-repository</permalink>
    <title>Jump to github from your repository</title>
    <updated-at type="datetime">2009-06-23T21:26:18-07:00</updated-at>
    <user-id type="integer">46915</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/deleting-a-repo/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/deleting-a-repo/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-02-27T18:48:20-08:00</created-at>
    <id type="integer">19</id>
    <permalink>how-do-i-delete-a-repository</permalink>
    <title>How do I delete a repository?</title>
    <updated-at type="datetime">2009-08-18T19:20:19-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/forking/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/forking/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-03-03T13:01:48-08:00</created-at>
    <id type="integer">22</id>
    <permalink>fork-a-project-and-submit-your-modifications</permalink>
    <title>Fork a project and submit your modifications</title>
    <updated-at type="datetime">2009-08-18T19:22:11-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;&lt;a href=&quot;http://develop.github.com/&quot;&gt;Brand New &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; at develop.github.com&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;We&amp;#8217;re adding an &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; bit by bit.  This page will serve as the documentation.&lt;/p&gt;
&lt;p&gt;The basic url template:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;http://github.com/api/&lt;span class=&quot;command&quot;&gt;version&lt;/span&gt;/&lt;span class=&quot;command&quot;&gt;format&lt;/span&gt;/&lt;span class=&quot;command&quot;&gt;username&lt;/span&gt;/&lt;span class=&quot;command&quot;&gt;repository&lt;/span&gt;/&lt;span class=&quot;command&quot;&gt;type&lt;/span&gt;/&lt;span class=&quot;command&quot;&gt;object&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Current version: v1&lt;/li&gt;
	&lt;li&gt;Acceptable formats: json, xml, yaml&lt;/li&gt;
	&lt;li&gt;Acceptable types: commits, commit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Grabbing all recent commits:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; curl -i http://github.com/api/v1/xml/caged/gitnub/commits/master | less
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Grabbing a single commit:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; curl -i http://github.com/api/v1/json/defunkt/github-gem/commit/c26d4ce9807ecf57d3f9eefe19ae64e75bcaaa8b | less
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Repository search:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; curl -i http://github.com/api/v1/xml/search/merb | less
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;You can also grab a user&amp;#8217;s info, including a list of his repositories:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; curl -i http://github.com/api/v1/json/defunkt | less
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;(Using token authentication, described below, will enable listing of private repositories.)&lt;/p&gt;
&lt;p&gt;With &lt;span class=&quot;caps&quot;&gt;JSON&lt;/span&gt; requests, you can have the result passed to a callback method of your choice:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;$&lt;/span&gt; curl -i http://github.com/api/v1/json/defunkt?callback=myCallbackMethod | less
&lt;/pre&gt;
&lt;/p&gt;
&lt;h2&gt;Projects using &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://drnicjavascript.rubyforge.org/github_badge/&quot;&gt;GitHub Badge&lt;/a&gt;  (see also &lt;a href=&quot;http://drnicwilliams.com/2008/05/03/github-badge-for-your-blog/&quot;&gt;initial blog post&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/zmack/badjo/tree/master&quot;&gt;Badjo&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/schleyfox/yaghb/tree/master&quot;&gt;&lt;span class=&quot;caps&quot;&gt;YAGHB&lt;/span&gt;&lt;/a&gt; &amp;#8211; Yet another github badge&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/wycats/textmate/&quot;&gt;textmate gem&lt;/a&gt; &amp;#8212; Command-line package manager for textmate&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/heipei/github-commit-badge/tree&quot;&gt;github commit badge&lt;/a&gt; &amp;#8211; GitHub commit badge, showing the most recent commits of chosen repos&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/andyatkinson/gadgets/tree/master&quot;&gt;&amp;#8216;gadgets&amp;#8217; project and &amp;#8216;demo generator&amp;#8217;&lt;/a&gt; (see also &lt;a href=&quot;http://webandy.com/2008/11/15/gadgets-and-demo-generator&quot;&gt;initial blog post&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/tristandunn/wp-github-projects/tree/master&quot;&gt;GitHub Projects Wordpress Plug-in&lt;/a&gt; &amp;#8211; Also at the official Wordpress &lt;a href=&quot;http://wordpress.org/extend/plugins/github-projects/&quot;&gt;plug-in directory&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/johnbender/github-repos/tree/master&quot;&gt;github-repos&lt;/a&gt; &amp;#8211; &lt;a href=&quot;http://nickelcode.com/2008/11/27/github-repo-information-in-your-webpages/&quot;&gt;Tutorial and Example&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/prtksxna/github-terminal/tree/master&quot;&gt;github-terminal&lt;/a&gt; , working example at &lt;a href=&quot;http://prtksxna.github.com/github-terminal/&quot;&gt;Github Terminal&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/Oshuma/git-trip/tree&quot;&gt;git-trip&lt;/a&gt; &amp;#8211; Visualize git repositories.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/kentbrew/github-social-badge&quot;&gt;github-social-badge&lt;/a&gt; &amp;#8211; Social badge: visualize projects and followers.  &lt;a href=&quot;http://kentbrew.github.com&quot;&gt;Working example&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/philsturgeon/codeigniter-github/tree/master&quot;&gt;codeigniter-github&lt;/a&gt; &amp;#8211; CodeIgniter / &lt;span class=&quot;caps&quot;&gt;PHP&lt;/span&gt; wrapper library.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://tagaholic.me/2009/04/06/github-bookmarklet-for-user-pages.html&quot;&gt;github user page bookmarklet&lt;/a&gt; &amp;#8211; adds additional repo stats to github user pages and provides repository sorting.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.refactorme.com&quot;&gt;RefactorMe&lt;/a&gt; &amp;#8211; Site posts daily code snippets from open source projects. All code is powered by Github Gists&amp;#8217; and the site will also create the gist for users if they do not want to create it themselves.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Additional resources&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/blog/170-token-authentication&quot;&gt;Token Authentication&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/guides/making-sense-of-the-participation-graph-data&quot;&gt;Making sense of the participation graph data&lt;/a&gt; ( explanation of the participation data )&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-03-11T18:02:54-07:00</created-at>
    <id type="integer">23</id>
    <permalink>the-github-api</permalink>
    <title>The GitHub API</title>
    <updated-at type="datetime">2009-04-19T17:15:10-07:00</updated-at>
    <user-id type="integer">22282</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;&lt;em&gt;Please, add your favorite cool and unusual Git techniques to this guide!&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;git add --patch&lt;/h2&gt;
&lt;p&gt;Lets you commit specific lines rather than whole files.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://tomayko.com/writings/the-thing-about-git&quot;&gt;The Thing About Git&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-add.html&quot;&gt;git add manpage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;git add --interactive&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;--interactive&lt;/code&gt; works very similar to &lt;code&gt;--patch&lt;/code&gt;, but gives you much more flexibility in choosing what (untracked) files and/or hunks you want to stage.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-add.html&quot;&gt;git add manpage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;git stash&lt;/h2&gt;
&lt;p&gt;Stash away the uncommited changes in your working directory to get a clean &lt;span class=&quot;caps&quot;&gt;HEAD&lt;/span&gt;.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-stash.html&quot;&gt;git stash manpage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Rebasing&lt;/h2&gt;
&lt;!-- I'm just guessing it is messy with forks, is it why we don't repush rebased commits? --&gt;&lt;p&gt;&lt;em&gt;Rebasing is neat for cleaning up commits, but you will generally &lt;strong&gt;not want to rebase already pushed commits&lt;/strong&gt; &amp;#8211; it becomes messy for others who are working on forks of your repository. If for some reason you really do want to repush rebased commits, you will need to &lt;code&gt;git push -f&lt;/code&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;git commit --amend&lt;/h3&gt;
&lt;p&gt;Add your changes to the last commit instead of a new one.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-commit.html&quot;&gt;git commit manpage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;git rebase --interactive&lt;/h3&gt;
&lt;p&gt;Rearrange, edit and squash commits.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.madism.org/index.php/2007/09/09/138-git-awsome-ness-git-rebase-interactive&quot;&gt;git awesome-ness&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html&quot;&gt;git rebase manpage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;git cherry-pick&lt;/h2&gt;
&lt;p&gt;Want to grab only one commit from someone else&amp;#8217;s repository?  First fetch their changes and then apply the individual commit with &lt;code&gt;git cherry-pick 1111111&lt;/code&gt; (where 1111111 is the beginning of the sha1 hash of the commit you want to apply).&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html&quot;&gt;git cherry-pick manpage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-04-09T00:32:50-07:00</created-at>
    <id type="integer">26</id>
    <permalink>cool-and-unusual-git-techniques</permalink>
    <title>Cool and unusual Git techniques</title>
    <updated-at type="datetime">2009-03-08T07:32:59-07:00</updated-at>
    <user-id type="integer">14644</user-id>
  </guide>
  <guide>
    <body>&lt;h1&gt;Direct &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The first step to testing your connection is to run &lt;code&gt;ssh git@github.com&lt;/code&gt;.  If your key works, you should get a message like:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;Hi username! You&amp;#8217;ve successfully authenticated, but GitHub does not provide shell access.&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If this step fails, try running &lt;code&gt;ssh -v git@github.com&lt;/code&gt;.  This will print out a bunch of info on what ssh is trying to do.  In this output you should check that ssh is connecting to the correct server, on the correct port (22).  Many firewalls and proxies will block this connection.  Also ensure that ssh is reading the correct key files, these are at ~/.ssh/id_rsa, id_dsa and identity by default.  If your key is not at this location, you should move it or create an override (see the &amp;#8220;&lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; config&amp;#8221; section below).&lt;/p&gt;
&lt;h1&gt;Permission to user/repo2 denied to user/repo1&lt;/h1&gt;
&lt;p&gt;This error occurs when you attach your key as a deploy key on repo1.  You can push and pull from that repo without issue, but you won&amp;#8217;t have access to any other repo with your key.  To solve this, remove the key from repo1&amp;#8217;s deploy keys and attach it on your &lt;a href=&quot;https://github.com/account&quot;&gt;account page&lt;/a&gt; instead.  This key will now have access to all repos your account has access to.&lt;/p&gt;
&lt;h1&gt;Permission denied (publickey)&lt;/h1&gt;
&lt;p&gt;This is usually caused when ssh cannot find your keys.  Make sure your key is in the default location, &lt;code&gt;~/.ssh&lt;/code&gt;. If you run &lt;code&gt;ssh-keygen&lt;/code&gt; again and just press enter at all 3 prompts it will be placed here automatically. Then you can add the contents of id_rsa.pub to &lt;a href=&quot;https://github.com/account&quot;&gt;my github keys&lt;/a&gt;. If id_rsa.pub doesn&amp;#8217;t work try id_dsa.pub. You might need to generate a new dsa key with &lt;code&gt;ssh-keygen -t dsa&lt;/code&gt; if you just have an rsa key.&lt;/p&gt;
&lt;h2&gt;If Using sudo With Git Commands, Ensure Key Was Generated With sudo&lt;/h2&gt;
&lt;p&gt;If you are using sudo with git commands (e.g. using &lt;code&gt;sudo git clone&lt;/code&gt; because you are deploying to a root-owned folder), ensure that you also generated the key using sudo.  Otherwise, you will have generated a key for your current user, but when you are doing sudo git, you are actually the root user &amp;#8211; thus, the keys will not match.&lt;/p&gt;
&lt;p&gt;In summary, if you are using &lt;code&gt;sudo git&lt;/code&gt;, then also use &lt;code&gt;sudo ssh-keygen&lt;/code&gt;.&lt;/p&gt;
&lt;h1&gt;&lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; config&lt;/h1&gt;
&lt;p&gt;If your github authentication information is different from your machine account information, you&amp;#8217;ll need to modify your ssh configuration file.&lt;/p&gt;
&lt;p&gt;Create or open the file at &lt;code&gt;~/.ssh/config&lt;/code&gt; Add the following lines:&lt;/p&gt;
&lt;pre&gt;Host github.com
	User git
	Hostname github.com
	PreferredAuthentications publickey
	IdentityFile [local path to private key half of github public key you provided]
&lt;/pre&gt;
&lt;p&gt;You may also need to update the permissions on your .ssh folder and its contents. The &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; application will ignore secret files that are too permissive.&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
&lt;/pre&gt;
&lt;h1&gt;&lt;span class=&quot;caps&quot;&gt;FATAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ERROR&lt;/span&gt;: Disconnected: No supported authentication methods available&lt;/h1&gt;
&lt;p&gt;You should be aware of the environment variable GIT_SSH, which is used by git to find your ssh-speaking client, if ssh doesn&amp;#8217;t work for you.  The git install may be using plink.exe (via GIT_SSH) to perform the authentication.  If so, make sure you have pageant.exe running, and the key you created for github loaded into it.  This provides the key to plink.exe; without it, the above error will occur.&lt;/p&gt;
&lt;p&gt;See &amp;#8220;this post&amp;#8221;: http://groups.google.com/group/github/browse_thread/thread/21fd06fb8c3f43bd/f5c44b2197d1be15 for a longer discussion.&lt;/p&gt;
&lt;p&gt;Especially with cygwin-git+pageant+putty/plink, you might want to set GIT_SSH to your plink.exe location &amp;#8212; unless that doesn&amp;#8217;t work for you. In certain circumstances (perhaps after a service pack installation), you will find git network operations failing with &lt;br /&gt;
this is because plink.exe running from your (cygwin-provided) git command &lt;a href=&quot;http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/cygwin-clobbers-pageant.html&quot;&gt;&lt;strong&gt;can&amp;#8217;t talk with pageant to get its keys&lt;/strong&gt;&lt;/a&gt; . A solution is to set up a script that has:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;/cygdrive/c/ntnot/plink.exe -i &amp;#8220;c:\users\you\.ssh\key-file-for-github.ppk&amp;#8221; $1 $2&lt;/pre&gt; &lt;br /&gt;
and set GIT_SSH to point to this:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;declare -x GIT_SSH=&amp;#8220;c:\path\to\script&amp;#8221;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This explicitly provides the key for plink to use, rather than have it talk with pageant.&lt;/p&gt;
&lt;p&gt;This problem occured for me when I used the executable with pageant that came with WinSCP, but a version of plink in a different directory. I have not found the exact cause yet. All versions were plink/pageant 0.60. (Not running under Cygwin)&lt;/p&gt;
&lt;p style=&quot;padding-left:1em;&quot;&gt;I did not have luck with this approach; GIT_SSH was set to plink.exe already; when I tried to create this script and reset the GIT_SSH I got a &amp;#8220;could not fork&amp;#8221; error back from git even though the script would run happily on it&amp;#8217;s own &amp;#8211; elijahsmith 9/11/08&lt;/p&gt;
&lt;p style=&quot;padding-left:1em;&quot;&gt;I couldn&amp;#8217;t get the latest versions of plink and pageant (as of 2008-Nov-15) to talk, and I&amp;#8217;m not running Cygwin. The only solution was to revert to using open-ssh by setting &lt;code&gt;GIT_SSH&lt;/code&gt; to &lt;code&gt;C:\Program Files\prg\Git\bin\ssh.exe&lt;/code&gt;. &amp;#8212; &lt;a href=&quot;http://github.com/dandv&quot;&gt;dandv&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;On Windows, you can&amp;#8217;t type &amp;#8220;y&amp;#8221; to confirm the &amp;#8220;Store [server&amp;#8217;s host] key in cache?&amp;#8221; prompt&lt;/h1&gt;
&lt;p&gt;This happens because git eats up the ssh client&amp;#8217;s &lt;span class=&quot;caps&quot;&gt;STDIN&lt;/span&gt; output. To work around that, launch &lt;code&gt;ssh github.com&lt;/code&gt; or &lt;code&gt;plink.exe -agent github.com&lt;/code&gt; standalone and press &amp;#8220;y&amp;#8221; at the prompt.&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-09T11:22:35-07:00</created-at>
    <id type="integer">27</id>
    <permalink>addressing-authentication-problems-with-ssh</permalink>
    <title>Addressing authentication problems with SSH</title>
    <updated-at type="datetime">2009-10-23T16:47:30-07:00</updated-at>
    <user-id type="integer">143421</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;No passphrase&lt;/h2&gt;
&lt;p&gt;The simplest solution, of course, is to not put a passphrase on your ssh key.  To do this, follow the steps outlined in [[Providing your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; Key]].  When prompted for a passphrase, simply hit enter.&lt;/p&gt;
&lt;h2&gt;ssh-agent&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;ssh-agent&lt;/code&gt;. Since you should already have a keypair, already known to GitHub, this is easy.&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;$ eval `ssh-agent`
$ ssh-add [key name such as id_rsa or it will add all]&lt;/pre&gt;
&lt;p&gt;That&amp;#8217;s it.&lt;/p&gt;
&lt;h3&gt;ssh-agent on &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt; Tiger&lt;/h3&gt;
&lt;p&gt;If you want to use a &lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt; tool such as &lt;a href=&quot;http://macromates.com/&quot;&gt;TextMate&lt;/a&gt; with GitHub you can install &lt;a href=&quot;http://www.macupdate.com/info.php/id/9773&quot;&gt;sshLogin&lt;/a&gt;. It will manage your keys for both &lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt; apps and Terminal sessions.&lt;/p&gt;
&lt;h3&gt;ssh-agent on &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt; Leopard&lt;/h3&gt;
&lt;p&gt;On &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt; Leopard &lt;code&gt;ssh-agent&lt;/code&gt; is started automatically when needed. You just need to run ssh-add. If you don&amp;#8217;t want to run ssh-add every time you login, you can add your default key to your default OS X account keychain with:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;$ /usr/bin/ssh-add -K&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Extract from &lt;code&gt;man ssh-add&lt;/code&gt; (On both Tiger and Leopard):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;-K*     When adding identities, each passphrase will also be stored in&lt;br /&gt;
             your keychain.  When removing identities with -d, each passphrase&lt;br /&gt;
             will be removed from your keychain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;-k*     Add identities to the agent using any passphrases stored in your&lt;br /&gt;
             keychain.&lt;/p&gt;
&lt;/blockquote&gt;</body>
    <created-at type="datetime">2008-04-09T15:33:33-07:00</created-at>
    <id type="integer">28</id>
    <permalink>how-to-not-have-to-type-your-password-for-every-push</permalink>
    <title>How to not have to type your password for every push</title>
    <updated-at type="datetime">2009-01-01T13:14:24-08:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;&lt;strong&gt;The formatting of the commands on this page is slightly messed up due to Textile &amp;#8211; use the original blog link:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.jaisenmathai.com/blog/2008/04/10/how-to-get-started-hosting-your-git-repository-using-github-and-osx/&quot; target=&quot;_blank&quot;&gt;Originally posted on jaisenmathai.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hosting remote git repositories using &lt;a href=&quot;http://github.com&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt; is completely painless, assuming that you&amp;#8217;ve already signed up for an account at GitHub and that you have Git installed on your computer.  For &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt;, you can use macports to easily get Git&amp;#8217;s command line tools installed.&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
	&lt;li&gt;&lt;a href=&quot;#publickeys&quot;&gt;Create your public keys&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;&lt;a href=&quot;#makerepo&quot;&gt;Make a repository on GitHub&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;&lt;a href=&quot;#remoterepo&quot;&gt;Specify GitHub as a remote repository&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
	&lt;li&gt;&lt;a href=&quot;#pushcode&quot;&gt;Push your code to GitHub&lt;/a&gt;&lt;/li&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a name=&quot;publickeys&quot;&gt;&lt;/a&gt;&lt;h2&gt;Create your public keys&lt;/h2&gt;&lt;br /&gt;
If you haven&amp;#8217;t already given GitHub your public key, you&amp;#8217;ll want to do that now.  If you don&amp;#8217;t already have a public key, let&amp;#8217;s do that first.  Fire up a terminal and do the following:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;user# cd ~/.ssh&lt;br /&gt;
user# ssh-keygen&lt;br /&gt;
Generating public/private rsa key pair.&lt;br /&gt;
Enter file in which to save the key (/Users/username/.ssh/id_rsa): # press enter here&lt;br /&gt;
Enter passphrase (empty for no passphrase): # type in your passphrase here&lt;br /&gt;
Enter same passphrase again: # type your passphrase again&lt;br /&gt;
Your identification has been saved in /Users/username/.ssh/id_rsa.&lt;br /&gt;
Your public key has been saved in /Users/username/.ssh/id_rsa.pub.&lt;br /&gt;
The key fingerprint is:&lt;br /&gt;
50:43:77:c6:97:af:61:82:dc:ea:9b:6b:67:d4:1b:61 user@host&lt;/pre&gt;&lt;br /&gt;
Now that you&amp;#8217;ve generated your public key, you should see it when you do an &lt;tt&gt;ls&lt;/tt&gt;.  Once this is verified, you can copy the contents to your clipboard:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;user# ls&lt;br /&gt;
known_hosts&lt;br /&gt;
id_rsa&lt;br /&gt;
id_rsa.pub&lt;br /&gt;
user# cat id_rsa.pub | pbcopy&lt;/pre&gt;&lt;br /&gt;
Now that your public key is on your &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt; clipboard head on over to &lt;a href=&quot;http://github.com/account&quot; target=&quot;_blank&quot;&gt;http://github.com/account&lt;/a&gt;, paste it in, and save it.&lt;br /&gt;
Note that git expects to use the key named &amp;#8216;id_rsa&amp;#8217; &amp;#8211; if you generate a key with a different name, you&amp;#8217;re likely to get ssh errors.&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;makerepo&quot;&gt;&lt;/a&gt;&lt;h2&gt;Make a repository on GitHub&lt;/h2&gt;&lt;br /&gt;
Next, you&amp;#8217;ll want to create a repository on GitHub.  Go to &lt;a href=&quot;http://github.com/repositories/new&quot; target=&quot;_blank&quot;&gt;http://github.com/repositories/new&lt;/a&gt; and fill out the form and make note of the project name as we&amp;#8217;ll be using that as the name of your git repository.  Feel free to select either public or private.&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;remoterepo&quot;&gt;&lt;/a&gt;&lt;h2&gt;Specify GitHub as a remote repository&lt;/h2&gt;&lt;br /&gt;
Let&amp;#8217;s move on to specifying GitHub as a remote repository on your local workstation/laptop.  Head back to your terminal and do the following.&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;user# cd ~/repos/my_repo&lt;br /&gt;
user# vi .git/config&lt;/pre&gt;&lt;br /&gt;
You should see a core section and will want to add a remote section.  The name can be anything, but I recommend using something like &amp;#8220;github&amp;#8221; to make it easier to remember what you&amp;#8217;re doing down the road.  Let&amp;#8217;s add the following to the bottom of the config file.&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;[remote &amp;#8220;github&amp;#8221;]&lt;br /&gt;
url = git@github.com:git_username/projectname.git&lt;br /&gt;
fetch =  +refs/heads/&lt;strong&gt;:refs/remotes/origin/&lt;/strong&gt;&lt;br /&gt;
push = refs/heads/master:refs/heads/master&lt;/pre&gt;&lt;br /&gt;
Your config file should now look something like this.&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;[core]&lt;br /&gt;
repositoryformatversion = 0&lt;br /&gt;
filemode = true&lt;br /&gt;
bare = false&lt;br /&gt;
logallrefupdates = true&lt;br /&gt;
[remote &amp;#8220;github&amp;#8221;]&lt;br /&gt;
url = git@github.com:git_username/projectname.git&lt;br /&gt;
fetch =  +refs/heads/&lt;strong&gt;:refs/remotes/origin/&lt;/strong&gt;&lt;br /&gt;
push = refs/heads/master:refs/heads/master&lt;/pre&gt;&lt;br /&gt;
You can also do this by typing this into your terminal.&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;user# git remote add github git@github.com:git_username/projectname.git&lt;/pre&gt;&lt;br /&gt;
&lt;a name=&quot;pushcode&quot;&gt;&lt;/a&gt;&lt;h2&gt;Push your code to GitHub&lt;/h2&gt;&lt;br /&gt;
Both essentially do the same thing, but once you&amp;#8217;ve defined a remote git repository, you can begin pushing your code to it.  Let&amp;#8217;s test it out and see if we can push our git repository to GitHub.&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;user# git push github master&lt;br /&gt;
Enter passphrase for key &amp;#8216;/Users/username/.ssh/id_rsa&amp;#8217;: # enter your passphrase here&lt;br /&gt;
updating &amp;#8216;refs/heads/master&amp;#8217;&lt;br /&gt;
from 000000000000000000000000000000&lt;br /&gt;
to   871b8e6c61bc6fca6ee974bc836d70&lt;br /&gt;
Also local refs/remotes/origin/master&lt;br /&gt;
Generating pack&amp;#8230;&lt;br /&gt;
Counting objects: 18&lt;br /&gt;
Done counting 1019 objects.&lt;br /&gt;
Deltifying 1019 objects&amp;#8230;&lt;br /&gt;
100% (1019/1019) done&lt;br /&gt;
Writing 1019 objects&amp;#8230;&lt;br /&gt;
100% (1019/1019) done&lt;br /&gt;
Total 1019 (delta 236), reused 0 (delta 0)&lt;br /&gt;
refs/heads/master: 000000000000000000000000000000 &amp;gt; 871b8e6c61bc6fca6ee974bc836d70&lt;/pre&gt;&lt;br /&gt;
That&amp;#8217;s it!  Now go back to your browser and verify that all your files are showing up.  Go back to &lt;a href=&quot;http://github.com&quot; target=&quot;_blank&quot;&gt;http://github.com&lt;/a&gt; and you should see &amp;#8220;Your Repositories&amp;#8221; to the right-hand side with your project directly underneath it.  Click on your project and you should see your files.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.jaisenmathai.com/blog/2008/04/10/how-to-get-started-hosting-your-git-repository-using-github-and-osx/&quot; target=&quot;_blank&quot;&gt;Comment on the original blog post&lt;/a&gt;.&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-11T00:19:23-07:00</created-at>
    <id type="integer">30</id>
    <permalink>setting-up-a-remote-repository-using-github-and-osx</permalink>
    <title>Setting up a remote repository using GitHub and OSX</title>
    <updated-at type="datetime">2009-09-28T14:48:49-07:00</updated-at>
    <user-id type="integer">13400</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Create a tunnel to github with the git default daemon port like this:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ ssh -L9418:github.com:9418 myuser@myhomessh.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And clone repositories replacing &lt;code&gt;github.com&lt;/code&gt; with &lt;code&gt;localhost&lt;/code&gt;, like so:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ git clone git://localhost/someuser/someproject.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you want to preserve the &amp;#8220;correct&amp;#8221; metadata, there are several options&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;replace localhost origin with github.com after cloning&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;git remote rm origin
git remote add origin git://github.com/someuser/someproject.git&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;add github.com to your hosts file and point it to 127.0.0.1&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;add github.com to your ~/.ssh/config:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;Host github.com
  HostName localhost
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;use your favourite packet forwarder, example for Mac OS X:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;sudo ipfw add 00100 fwd 127.0.0.1,9418 tcp from me to github.com dst-port 9418&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
and when you are done, don&amp;#8217;t forget to remove it:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;sudo ipfw delete 00100&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
(use caution, especially if you are using ipfw already and have rule 00100 in place)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Stuck behind a corporate firewall? &lt;a href=&quot;http://blog.codeslower.com/2008/8/Using-PuTTY-and-SSL-to-securely-access-GitHub-repositories-via-SSH&quot;&gt;Justin Bailey&lt;/a&gt; has a good guide. Scroll down for a *nix solution as well.&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-15T08:46:54-07:00</created-at>
    <id type="integer">32</id>
    <permalink>how-to-clone-from-github-with-ssh-tunnels</permalink>
    <title>How to clone from github with ssh tunnels</title>
    <updated-at type="datetime">2009-02-03T09:15:25-08:00</updated-at>
    <user-id type="integer">49715</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Importing an existing local git repository is dead easy.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/repositories/new&quot;&gt;Create a new github project&lt;/a&gt; (the link is close to the top right of &lt;a href=&quot;https://github.com/&quot;&gt;your dashboard&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
cd /existing/local/git/repo&lt;br /&gt;
git remote add origin git@github.com:YourGitHubUsername/your-github-projectname.git&lt;br /&gt;
git push origin master&lt;br /&gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;</body>
    <created-at type="datetime">2008-04-15T11:41:30-07:00</created-at>
    <id type="integer">34</id>
    <permalink>import-an-existing-git-repo</permalink>
    <title>Import an existing git repo</title>
    <updated-at type="datetime">2008-10-27T18:49:26-07:00</updated-at>
    <user-id type="integer">1683</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This is pretty much the shorthand version of this blogpost: &lt;a href=&quot;http://kylecordes.com/2008/04/30/git-windows-go&quot;&gt;http://kylecordes.com/2008/04/30/git-windows-go&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Portuguese version available at: &lt;a href=&quot;http://blog.tinogomes.com/2008/05/11/instalando-e-usando-git-no-windows-xp/&quot;&gt;http://blog.tinogomes.com/2008/05/11/instalando-e-usando-git-no-windows-xp/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another excellent and thorough resource is &lt;a href=&quot;http://nathanj.github.com/gitguide/&quot;&gt;An Illustrated Guide to Git on Windows&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Git for Windows Developers: &lt;a href=&quot;http://www.lostechies.com/blogs/jason_meridth/archive/2009/06/01/git-for-windows-developers-git-series-part-1.aspx&quot;&gt;http://www.lostechies.com/blogs/jason_meridth/archive/2009/06/01/git-for-windows-developers-git-series-part-1.aspx&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Git Installation&lt;/h2&gt;
&lt;p&gt;There are currently two ways to install Git in Windows. One way is to install it together with &lt;a href=&quot;http://www.cygwin.com/&quot;&gt;cygwin&lt;/a&gt; . But the easiest way is to install git with &lt;a href=&quot;http://code.google.com/p/msysgit/&quot;&gt;msysGit&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Installing git with msysGit&lt;/h3&gt;
&lt;p&gt;Download the latest installer from &lt;a href=&quot;http://code.google.com/p/msysgit/downloads/list&quot;&gt;Google code&lt;/a&gt; and run it. To avoid path conflicts, pick the &amp;#8220;Use Git Bash only&amp;#8221; setting during the installation.&lt;/p&gt;
&lt;h4&gt;using git from the cmd.exe prompt&lt;/h4&gt;
&lt;p&gt;I&amp;#8217;m not sure if this is a universal thing or not, but I will post my problems, and hopefully, they will help somebody. With msysgit, if you want to be able to run git from the command prompt, and thus use any git related software (EGit plugin for Eclipse, as an example), then you must do two things. First, you must select the &amp;#8220;Run Git from the Windows Command Prompt&amp;#8221; option, and second, you must use putty/plink/pageant for &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt;. then you should be able to connect to GitHub without problem&lt;/p&gt;
&lt;h3&gt;Creating your very own &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt;-key&lt;/h3&gt;
&lt;p&gt;In order to use git, you will need to generate a key.  To do this open Git Bash (from the start menu, quicklauncher or right click a directory and choose &amp;#8220;Git Bash Here&amp;#8221;.)  Type in the following: &lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
&lt;code&gt;
$ ssh-keygen -C &quot;your@email.com&quot; -t rsa
&lt;/code&gt; &lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Use your own email address of course.  Use the default file name (id_rsa) and provide a password. The generated key will be stored in your profile, e.g.: &lt;code&gt;C:\Documents and Settings\YourNameHere\.ssh\&lt;/code&gt; on XP or &lt;code&gt;C:\Users\YourNameHere\.ssh\&lt;/code&gt; on Vista.&lt;/p&gt;
&lt;h3&gt;Identify yourself to git&lt;/h3&gt;
&lt;p&gt;With the bash shell still opened type in the following: &lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
&lt;code&gt;
$ git config --global user.name &quot;Your Name Here&quot;
$ git config --global user.email your@email.com
&lt;/code&gt; &lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
This will set the info stored when you commit to a git repository.&lt;/p&gt;
&lt;p&gt;Now that you&amp;#8217;ve set up git, you can find many more guides on how to use it in the &lt;a href=&quot;http://github.com/guides&quot;&gt;guide list&lt;/a&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-15T21:03:09-07:00</created-at>
    <id type="integer">35</id>
    <permalink>using-git-and-github-for-the-windows-for-newbies</permalink>
    <title>Using Git and Github for the Windows for newbies</title>
    <updated-at type="datetime">2009-09-06T22:28:13-07:00</updated-at>
    <user-id type="integer">67798</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;We generate your Gravatar from the email address that is part of the commit. Try running &lt;code&gt;git log&lt;/code&gt; in your repo to see the email address that specified for each commit. Make sure you have a Gravatar for each email address that you use to commit with.&lt;/p&gt;
&lt;p&gt;To fix your email when committing in git:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;[~]&lt;/span&gt;$ &lt;span class=&quot;command&quot;&gt;git config --global user.email me@example.com&lt;/span&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;You may also need to check your Gravatar account to make sure your Gravatar has a G rating.&lt;/p&gt;
&lt;p&gt;If you wish to set this on a repo-level instead of a global one:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;
&lt;span&gt;[~/path/to/repo]&lt;/span&gt;$ &lt;span class=&quot;command&quot;&gt;git config user.email me@example.com&lt;/span&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This change will only affect future commits.  Your past commits will retain the old, incorrect address.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you add an email address to your account that matches existing commits, it may take some time for caches to clear before the commit will link to your account and show your gravatar.&lt;/em&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-17T01:14:38-07:00</created-at>
    <id type="integer">37</id>
    <permalink>i-m-missing-my-gravatar-icon-on-my-commits</permalink>
    <title>I'm missing my Gravatar icon on my commits</title>
    <updated-at type="datetime">2009-07-04T10:15:33-07:00</updated-at>
    <user-id type="integer">101480</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Submodules allows you to manage subparts of a project in different git repositories and reference them in a &#8220;superproject&#8221; repository.  Here is a link with a great example of submodule usage to track your plugins:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://woss.name/2008/04/09/using-git-submodules-to-track-vendorrails/&quot;&gt;http://woss.name/2008/04/09/using-git-submodules-to-track-vendorrails/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Adding Rails as a submodule&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;git submodule add git://github.com/rails/rails.git vendor/rails&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Once the submodule is added we need to register this submodule using `init`.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git submodule init&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;From now we can update all the submodules using the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git submodule update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Tell Capistrano to update submodules with the following line in &lt;code&gt;config/deploy.rb&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;set :git_enable_submodules, true&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you have used your private clone &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;, you have to use &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; agent and forward it:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh_options[:forward_agent] = true&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Removing Rails as a submodule&lt;/h3&gt;
&lt;ol&gt;
	&lt;li&gt;Remove references to the submodule in &lt;code&gt;.gitmodules&lt;/code&gt; and &lt;code&gt;.git/config&lt;/code&gt;.&lt;/li&gt;
	&lt;li&gt;Run the following command:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;git rm --cached vendor/rails&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: do not use a trailing slash on the submodule directory&lt;/p&gt;
&lt;p&gt;From &lt;a href=&quot;http://pitupepito.homelinux.org/?p=24&quot;&gt;http://pitupepito.homelinux.org/?p=24&lt;/a&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-17T14:46:35-07:00</created-at>
    <id type="integer">39</id>
    <permalink>using-git-submodules-to-track-plugins</permalink>
    <title>Using git submodules to track plugins</title>
    <updated-at type="datetime">2009-05-04T18:09:39-07:00</updated-at>
    <user-id type="integer">25343</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Github is all about sharing content, so at some point you&amp;#8217;ll be willing to push from your local git repository to github&amp;#8217;s. To push a local branch to your remote repository, do:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git push &amp;lt;remote_repository_name&amp;gt; &amp;lt;branch_name&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Examples:&lt;br /&gt;
Assuming you did &lt;code&gt;git clone git://github.com/you/your-project.git&lt;/code&gt;, hence &lt;code&gt;origin&lt;/code&gt; is the remote.&lt;br /&gt;
- pushing the branch &lt;code&gt;my_new_branch&lt;/code&gt; to your Github repos: &lt;code&gt;git push origin my_new_branch&lt;/code&gt;&lt;br /&gt;
- merging the branch &lt;code&gt;experiment&lt;/code&gt; into &lt;code&gt;master&lt;/code&gt; and push it:&lt;br /&gt;
&lt;code&gt;git checkout master&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;git merge experiment&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;git push origin master&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To remove a useless branch after merging and/or pushing, see &lt;a href=&quot;http://github.com/guides/remove-a-remote-branch&quot;&gt;Guide: Remove a remote branch&lt;/a&gt;.&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-17T19:26:21-07:00</created-at>
    <id type="integer">40</id>
    <permalink>push-a-branch-to-github</permalink>
    <title>Push a Branch to GitHub</title>
    <updated-at type="datetime">2009-08-30T21:16:25-07:00</updated-at>
    <user-id type="integer">3300</user-id>
  </guide>
  <guide>
    <body>&lt;h3&gt;Git principles&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://eagain.net/articles/git-for-computer-scientists/&quot; title=&quot;lots of pictures&quot;&gt;Git for computer scientists.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/user-manual.html&quot;&gt;Git user&amp;#8217;s manual&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www-cs-students.stanford.edu/~blynn/gitmagic/&quot;&gt;Git Magic&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Zach Rusin&amp;#8217;s &lt;a href=&quot;http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html&quot;&gt;Git Cheat Sheet&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;span class=&quot;caps&quot;&gt;SVG&lt;/span&gt; is at:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://ktown.kde.org/~zrusin/git/git-cheat-sheet.svg&quot;&gt;http://ktown.kde.org/~zrusin/git/git-cheat-sheet.svg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sample png&amp;#8217;s are here:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png&quot;&gt;http://ktown.kde.org/&lt;span&gt;~&lt;/span&gt;zrusin/git/git-cheat-sheet-medium.png&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://ktown.kde.org/~zrusin/git/git-cheat-sheet-large.png&quot;&gt;http://ktown.kde.org/&lt;span&gt;~&lt;/span&gt;zrusin/git/git-cheat-sheet-large.png&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;cheat.errtheblog.com&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://cheat.errtheblog.com/s/git/&quot;&gt;http://cheat.errtheblog.com/s/git/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://cheat.errtheblog.com/s/git_usage/&quot;&gt;http://cheat.errtheblog.com/s/git_usage/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://cheat.errtheblog.com/s/gitsvn/&quot;&gt;http://cheat.errtheblog.com/s/gitsvn/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;A Practical Git &lt;span class=&quot;caps&quot;&gt;GUIDE&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;(credit: notes extracted from &lt;span class=&quot;caps&quot;&gt;GIT&lt;/span&gt; screencast at http://www.peepcode.com.)&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;caps&quot;&gt;CONFIGURE&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;identify yourself to git: email and your name&lt;/p&gt;
git config &amp;#8212;global user.name &amp;#8220;David Beckwith&amp;#8221;
git config &amp;#8212;global user.email &amp;#8220;dbitsolutions@gmail.com&amp;#8221;
&lt;p&gt;To view all options:&lt;/p&gt;
git config &amp;#8212;list
&lt;p&gt;OR&lt;/p&gt;
cat .gitconfig
&lt;h4&gt;&lt;span class=&quot;caps&quot;&gt;SET&lt;/span&gt; UP &lt;span class=&quot;caps&quot;&gt;ALIASES&lt;/span&gt;&lt;/h4&gt;
git config &amp;#8212;global alias.co checkout
&lt;h4&gt;&lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CONFIGURATION&lt;/span&gt;&lt;/h4&gt;
cat .gitconfig
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;IGNORE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WHITESPACE&lt;/span&gt; (Ruby is whitespace insensitive)&lt;/h4&gt;
git config &amp;#8212;global apply.whitespace nowarn
&lt;p&gt;Some nice aliases:&lt;/p&gt;
gb = git branch
gba = git branch -a
gc = git commit -v
gd = git diff | mate
gl = git pull
gp = git push
gst = git status
&lt;h3&gt;&lt;span class=&quot;caps&quot;&gt;START&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;USING&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;GIT&lt;/span&gt;&lt;/h3&gt;
git init
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;IGNORE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SOME&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FILES&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Add a file in the root directory called .gitignore and add some files to it: (comments begin with hash)&lt;/p&gt;
*.log
db/schema.rb
db/schema.sql
&lt;p&gt;Git automatically ignores empty directories. If you want to have a &lt;code&gt;log/&lt;/code&gt; directory, but want to ignore all the files in it, add the following lines to the root &lt;code&gt;.gitignore&lt;/code&gt;: (lines beginning with &amp;#8216;!&amp;#8217; are exceptions)&lt;/p&gt;
log/*
!.gitignore
&lt;p&gt;Then add an empty &lt;code&gt;.gitignore&lt;/code&gt; in the empty directory:&lt;/p&gt;
touch log/.gitignore
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SCHEDULE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ADDITION&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FILES&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;NEXT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt;&lt;/h4&gt;
git add .
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SEE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;STATUS&lt;/span&gt;&lt;/h4&gt;
git status
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt;&lt;/h4&gt;
git commit -m &amp;#8220;First import&amp;#8221;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SEE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WHAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;HAS&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BEEN&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMITTED&lt;/span&gt;&lt;/h4&gt;
git ls-files
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SCHEDULE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;DELETION&lt;/span&gt; OF A &lt;span class=&quot;caps&quot;&gt;FILE&lt;/span&gt;&lt;/h4&gt;
git rm [file name]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt; IN &lt;span class=&quot;caps&quot;&gt;FILES&lt;/span&gt; IN &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CURRENT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt;&lt;/h4&gt;
git commit -a
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SCHEDULE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ADDITION&lt;/span&gt; OF AN &lt;span class=&quot;caps&quot;&gt;INDIVIDUAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FILE&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;NEXT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt;&lt;/h4&gt;
git add [file name]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;DIFFERENCE&lt;/span&gt; AS &lt;span class=&quot;caps&quot;&gt;YOU&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; -v &lt;span class=&quot;caps&quot;&gt;OPTION&lt;/span&gt;&lt;/h4&gt;
git commit -v
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TYPE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MESSAGE&lt;/span&gt; ON &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMAND&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LINE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; -m &lt;span class=&quot;caps&quot;&gt;OPTION&lt;/span&gt;&lt;/h4&gt;
git commit -m &amp;#8220;This is the message describing the commit&amp;#8221;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;GET&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;AUTOMATICALLY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ANY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;OTHER&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;PEOPLE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; -a &lt;span class=&quot;caps&quot;&gt;OPTION&lt;/span&gt;&lt;/h4&gt;
git commit -a
&lt;h4&gt;&lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;NORMAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMAND&lt;/span&gt;:&lt;/h4&gt;
git commit -a -v
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;LOG&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMITS&lt;/span&gt;&lt;/h4&gt;
git log
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;LOG&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMITS&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WITH&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;GRAPH&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;SHOW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;EXTENT&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt;&lt;/h4&gt;
git log &amp;#8212;stat
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;HAVE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;PAGINATION&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WHEN&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;VIEWING&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOG&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FILE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; -v &lt;span class=&quot;caps&quot;&gt;OPTION&lt;/span&gt;&lt;/h4&gt;
git log -v
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VISUALIZE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt;&lt;/h4&gt;
gitk &amp;#8212;all
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;CREATE&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;NEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TAG&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;PUSH&lt;/span&gt; IT ON &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;&lt;/h4&gt;
git tag &amp;#8220;v1.3&amp;#8221;
git push &amp;#8212;tags
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;CREATE&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;NEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;&lt;/h4&gt;
git branch [name of your new branch]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;PUSH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;NEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; TO A &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt;&lt;/h4&gt;
git push origin [new-remote]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;PULL&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;NEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FROM&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt;&lt;/h4&gt;
git fetch origin [remote-branch]:[new-local-branch]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ALL&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;EXISTING&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCHES&lt;/span&gt;&lt;/h4&gt;
git branch
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;LIST&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;ALL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCHES&lt;/span&gt;&lt;/h4&gt;
git branch -a
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SWITCH&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;ANOTHER&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;The state of your file system will change after executing this command.&lt;/p&gt;
git checkout [name of the branch you want to switch to]
&lt;p&gt;OR&lt;/p&gt;
git co [name of the branch you want to switch to]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;MAKE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SURE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;NEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;GETS&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MASTER&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; (&lt;span class=&quot;caps&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;EVERYBODY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ELSE&lt;/span&gt; IS &lt;span class=&quot;caps&quot;&gt;WORKING&lt;/span&gt;) &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REBASE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMAND&lt;/span&gt;&lt;/h4&gt;
git rebase master
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;MERGE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;NEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MASTER&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;First, switch back to the master branch:&lt;/p&gt;
git co master
&lt;p&gt;Check to see what changes you&amp;#8217;re about to merge together, compare the two branches:&lt;/p&gt;
git diff master xyz
&lt;p&gt;If you&amp;#8217;re in a branch that&amp;#8217;s not the &lt;code&gt;xyz&lt;/code&gt; branch and want to merge the &lt;code&gt;xyz&lt;/code&gt; branch into it:&lt;/p&gt;
git merge xyz
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;REVERT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt; to before the merge.&lt;/h4&gt;
git reset &amp;#8212;hard ORIG_HEAD
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;RESOLVE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CONFLICTS&lt;/span&gt; just edit your file.&lt;/h4&gt;
&lt;p&gt;Remove the markings, add the file, then commit.&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;CREATE&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SWITCH&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; IN &lt;span class=&quot;caps&quot;&gt;ONE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MOVE&lt;/span&gt;:&lt;/h4&gt;
git checkout -b [name of new branch]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;CREATE&lt;/span&gt; A &amp;#8220;&lt;span class=&quot;caps&quot;&gt;CLIPBOARD&lt;/span&gt;&amp;#8221; or &amp;#8220;&lt;span class=&quot;caps&quot;&gt;STASH&lt;/span&gt;&amp;#8221; OF &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ARE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YET&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMITED&lt;/span&gt; (SO &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOU&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CAN&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SWITCH&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;ANOTHER&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; IN &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MIDDLE&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt;.), &lt;span class=&quot;caps&quot;&gt;CREATE&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;STASH&lt;/span&gt;.&lt;/h4&gt;
git stash &amp;#8220;Put a message here to remind you of what you&amp;#8217;re saving to the clipboard&amp;#8221;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SWITCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;AWAY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CURRENT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;&lt;/h4&gt;
git co [branch you want to switch to]
&lt;p&gt;Do whatever&lt;br /&gt;
Then switch back to the stashed branch&lt;/p&gt;
git co [the stashed branch]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LIST&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;STASHES&lt;/span&gt;&lt;/h4&gt;
git stash list
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;LOAD&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BACK&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &amp;#8220;&lt;span class=&quot;caps&quot;&gt;CLIPBOARD&lt;/span&gt;&amp;#8221; OR &amp;#8220;&lt;span class=&quot;caps&quot;&gt;STASH&lt;/span&gt;&amp;#8221;&lt;/h4&gt;
git stash apply
&lt;p&gt;Now you can continue to work where you were previously.&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;DELETE&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; IS &lt;span class=&quot;caps&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;USED&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ANYMORE&lt;/span&gt;, but already merged into the current branch.  (TO &lt;span class=&quot;caps&quot;&gt;CLEAN&lt;/span&gt; UP)&lt;/h4&gt;
git branch -d [name of branch you want to delete]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;DELETE&lt;/span&gt; AN &lt;span class=&quot;caps&quot;&gt;UNMERGED&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;&lt;/h4&gt;
git branch -D [name of branch you want to delete]
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;STASH&lt;/span&gt;.  (&lt;span class=&quot;caps&quot;&gt;ERASE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &amp;#8220;&lt;span class=&quot;caps&quot;&gt;CLIPBOARD&lt;/span&gt;&amp;#8221; &lt;span class=&quot;caps&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MEMORY&lt;/span&gt;)&lt;/h4&gt;
git stash clear
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SET&lt;/span&gt; UP &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FOR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SHARING&lt;/span&gt; ON A &lt;span class=&quot;caps&quot;&gt;CENTRAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SERVER&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Copy up your repository. e.g.:&lt;/p&gt;
scp -r my_project deploy@yourbox.com:my_project
&lt;p&gt;Move your files on the remote server to &lt;code&gt;/var/git/my_project&lt;/code&gt;&lt;br /&gt;
For security make the owner of this project git&lt;br /&gt;
On the repository server:&lt;/p&gt;
sudo chown -R git:git my_project
&lt;p&gt;Then (for security) restrict the &amp;#8220;deploy&amp;#8221; user to doing git-related things in &lt;code&gt;/etc/passwd&lt;/code&gt; with a &lt;code&gt;git-shell&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;CHECK&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;OUT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;GIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCALHOST&lt;/span&gt;.  ON &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;HOST&lt;/span&gt; DO &lt;span class=&quot;caps&quot;&gt;THIS&lt;/span&gt;:&lt;/h4&gt;
git clone git@yourbox.com:/var/git/my_project
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SEE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SOME&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;INFO&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ABOUT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WILL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TELL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOU&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WHICH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt; IS &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MASTER&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WHICH&lt;/span&gt; IS &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SLAVE&lt;/span&gt;:&lt;/h4&gt;
cat .git/config
&lt;p&gt;By virtue of having cloned the remote repository, your local repository becomes the slave and will track and synchronize with the remote master branch.&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;UPDATE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SERVER&lt;/span&gt;:&lt;/h4&gt;
git pull
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;GET&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;COPY&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ENTIRE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt; (e.g. a repository named &amp;#8220;laptop&amp;#8221;) &lt;span class=&quot;caps&quot;&gt;WITHOUT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MERGING&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THEM&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCHES&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FETCH&lt;/span&gt;&lt;/h4&gt;
git fetch laptop
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;MERGE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TWO&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCHES&lt;/span&gt; (ie. your local xyz branch with your local master branch) &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;MERGE&lt;/span&gt;&lt;/h4&gt;
git merge laptop/xyz
&lt;p&gt;This merged the (already copied laptop repository&amp;#8217;s xyz branch) with the current branch you&amp;#8217;re sitting in.&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;MERGE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WITH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOU&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ARE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SITTING&lt;/span&gt; IN &lt;span class=&quot;caps&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;PULL&lt;/span&gt;&lt;/h4&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;ADD&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;KNOWLEDGE&lt;/span&gt; (TO &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt;) OF A 2ND &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt;, &lt;span class=&quot;caps&quot;&gt;LIKE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LAPTOP&lt;/span&gt;&lt;/h4&gt;
git remote add laptop duo2book.local:repos/m_project
&lt;p&gt;where &amp;#8217;&amp;#8217;&amp;#8217;laptop&amp;#8217;&amp;#8217;&amp;quot; is the name of the remote repository and  &amp;#8220;&amp;#8216;&amp;#8217;duo2book.local&amp;#8217;&amp;#8217;&amp;#8221; is the name of the remote machine.&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;META&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;INFORMATION&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ABOUT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt;&lt;/h4&gt;
git remote show laptop
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;PUSH&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;COMMITTED&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;CHANGE&lt;/span&gt; OF &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; xyz &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; laptop &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;&lt;/h4&gt;
git push laptop xyz
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;CREATE&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;TRACKING&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt; (A &lt;span class=&quot;caps&quot;&gt;SLAVE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;).  Ie. to link a local branch to a remote branch:&lt;/h4&gt;
git branch &amp;#8212;track local_branch remote_branch
&lt;h4&gt;&lt;span class=&quot;caps&quot;&gt;NOW&lt;/span&gt; IF YOU&amp;#8217;RE &lt;span class=&quot;caps&quot;&gt;SITTING&lt;/span&gt; IN &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TRACKING&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;, TO &lt;span class=&quot;caps&quot;&gt;PULL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOU&lt;/span&gt; DON&amp;#8217;T &lt;span class=&quot;caps&quot;&gt;NEED&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;SPECIFY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TRACKING&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;:&lt;/h4&gt;
git  pull
&lt;p&gt;Note: You can track(link) different local branches to different remote machines.  For example, you can track your friend&amp;#8217;s &amp;#8220;upgrade&amp;#8221; branch with your &amp;#8220;bobs_upgrade&amp;#8221; branch, and simultaneously you can track the origin&amp;#8217;s &amp;#8220;master&amp;#8221; branch (of your main webserver) with your local &amp;#8220;master&amp;#8221; branch.&lt;/p&gt;
&lt;p&gt;By convention, &amp;#8216;origin&amp;#8217; is the local name given to the remote centralized server which is the way &lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt; is usually set up on a remote server.&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;SEE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WHICH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCHES&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;ARE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;TRACKING&lt;/span&gt; A &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BRANCH&lt;/span&gt;:&lt;/h4&gt;
git remote show origin
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;WORK&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WITH&lt;/span&gt; AN &lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BUT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WORK&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WITH&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;GIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCALLY&lt;/span&gt;:&lt;/h4&gt;
git-svn clone [http location of an svn repository]
&lt;p&gt;Now you can work with the checked out directory as though it was a git repository.  (cuz it is)&lt;/p&gt;
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;PUSH&lt;/span&gt; (&lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt;) &lt;span class=&quot;caps&quot;&gt;CHANGES&lt;/span&gt; TO &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REMOTE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SERVER&lt;/span&gt;&lt;/h4&gt;
git-svn dcommit
&lt;h4&gt;TO &lt;span class=&quot;caps&quot;&gt;UPDATE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;YOUR&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;THE&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;REPOSITORY&lt;/span&gt;&lt;/h4&gt;
git-svn rebase
&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;NOTE&lt;/span&gt;: make sure you have your perl bindings to your local svn installation.&lt;/p&gt;
&lt;h4&gt;I screwed up, how do I reset my checkout?&lt;/h4&gt;
git checkout -f</body>
    <created-at type="datetime">2008-04-18T09:17:49-07:00</created-at>
    <id type="integer">41</id>
    <permalink>git-cheat-sheet</permalink>
    <title>Git Cheat Sheet</title>
    <updated-at type="datetime">2009-10-19T16:59:09-07:00</updated-at>
    <user-id type="integer">141533</user-id>
  </guide>
  <guide>
    <body>&lt;p style=&quot;background:#fefeb4;border:1px solid #dddddd;font-weight:bold;padding:0.5em 1em;&quot;&gt;The solution detailed in this guide is fairly complex and may not be ideal for most users.&lt;br /&gt;
We recommend you check out the solutions detailed in [[Managing multiple clients and their repositories]] first.&lt;/p&gt;
&lt;h2&gt;The Problem&lt;/h2&gt;
&lt;p&gt;One might encounter a situation where two GitHub accounts might be necessary. Naturally, I mean two &lt;strong&gt;pay&lt;/strong&gt; accounts in order to remain in good standing according to the &lt;span class=&quot;caps&quot;&gt;TOS&lt;/span&gt; (or one free and one pay account). And we all want to stay in good standing with GitHub since they were awesome enough to make this great web application, right? Nevertheless, with that said, one might find one&amp;#8217;s self in this situation.&lt;/p&gt;
&lt;p&gt;A problem that one is likely to encounter in this situation is attempting to maintain two or more repositories that use more than one GitHub account. Using the default public/private key setup that GitHub suggests works great when only one account is involved, but when one attempts to clone a repository using a second account, by default, git attempts to use the first account, which is likely declined resulting in failure.&lt;/p&gt;
&lt;p&gt;This article is assuming that you already have two git accounts created and that you already have the first &lt;a href=&quot;http://github.com/guides/providing-your-ssh-key&quot;&gt;key pair&lt;/a&gt; in place on both your local system and on GitHub.&lt;/p&gt;
&lt;h2&gt;Generating a Second Key Pair&lt;/h2&gt;
&lt;p&gt;Read this section &lt;span class=&quot;caps&quot;&gt;COMPLETELY&lt;/span&gt; before actually doing anything.  You could easily get yourself into a lot of trouble if you do not.  GitHub identifies which account you are attempting to access by the &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; key that you give it.  To this end, you cannot use the same key pair for more than one GitHub account.  You will need to follow the instructions given in the guide entitled &lt;a href=&quot;http://github.com/guides/providing-your-ssh-key&quot;&gt;Providing your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; Key&lt;/a&gt;.  I think it would be unwise to reproduce part of that guide here.&lt;/p&gt;
&lt;p&gt;Upon executing the ssh-keygen command, you will be presented with a prompt similar to the following:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;Enter file in which to save the key (/Users/tom/.ssh/id_rsa):&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;&lt;span class=&quot;caps&quot;&gt;WARNING&lt;/span&gt;&lt;/b&gt;: If you already had a key pair and are using it for anything at all, do &lt;span class=&quot;caps&quot;&gt;NOT&lt;/span&gt; leave this blank nor should you use the default file suggested. It will overwrite your primary key pair, and that would be very bad.&lt;/p&gt;
&lt;p&gt;Instead of using &amp;#8220;id_rsa&amp;#8221;, you should use something like &amp;#8220;id_rsa_github_useraccount&amp;#8221; to denote the purpose of the key.  So ultimately, you would enter:&lt;/p&gt;
&lt;pre  class=&quot;console&quot;&gt;/Users/tom/.ssh/id_rsa_github_useraccount&lt;/pre&gt;
&lt;h2&gt;Placing the Public and Private Keys&lt;/h2&gt;
&lt;h3&gt;Private Key&lt;/h3&gt;
&lt;p&gt;You will not actually be putting the private key anywhere, but instead only referencing it.  For this, you will need to open the &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; config (~/.ssh/config) file in your favorite editor.  Once in this file, you should add the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# GitHub for cylence
Host github-tom
  HostName github.com
  User git
  IdentityFile /Users/tom/.ssh/id_rsa_git_tom&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The top line is a simple comment, you can leave this out of you choose. Next is the name of the Host, this is what you will use when referencing this connection and after the word &amp;#8220;Host&amp;#8221; followed by a space is completely arbitrary. The HostName must be &amp;#8220;github.com&amp;#8221; as is the same with the User.Notice that it is still &amp;#8220;git&amp;#8221; and not an account name.  Lastly, the IdentityFile line must contain a non-reative path to your newly created private key (&lt;span class=&quot;caps&quot;&gt;NOT&lt;/span&gt; ending with .pub).&lt;/p&gt;
&lt;h3&gt;Public Key&lt;/h3&gt;
&lt;p&gt;Once the private key is properly being referenced, you must tell GitHub what the public key is. You do this by accessing your &lt;a href=&quot;http://github.com/account&quot;&gt;account page&lt;/a&gt; on GitHub.  Place your public key (including the carriage return at the end) into the &amp;#8220;&lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; Public Keys&amp;#8221; textarea field.&lt;/p&gt;
&lt;h2&gt;Using the Newly Created Keys&lt;/h2&gt;
&lt;p&gt;From here on, everything is the same except for one component. To present an example, we will look at a standard clone command.&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;git clone git@github.com:account/repository.git&lt;/pre&gt;
&lt;p&gt;Traditionally, this command consists of &amp;#8220;git clone&amp;#8221;, the command to be performed, followed by a mostly ordinary ssh connection.&lt;/p&gt;
&lt;pre&gt;user@domain:path/somewhere/file.extension&lt;/pre&gt;
&lt;p&gt;What we will be changing is the domain portion of this line.  Instead of using the domain &amp;#8220;github.com&amp;#8221;, we will be specifying the pre-configured &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; connection we built earlier.  It is referenced using the Host line.  Using our previous example, the end result would look like this:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;git clone git@github-tom:account/repository.git&lt;/pre&gt;
&lt;h2&gt;Notes&lt;/h2&gt;
&lt;p&gt;If you are running keychain to manage your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; keys you may need to stop ssh-agent and add the new key to your keyring for it to work properly.  If you are seeing failed access to your repositories as your other user, even though you&amp;#8217;re configured to use the new key with your correct user you may wish to give this a try. On &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt; Leopard is built in keychain integration, so either don&amp;#8217;t store your passphrase in keychain or don&amp;#8217;t use passphrase for your private key at all.&lt;/p&gt;
&lt;p&gt;Regarding multiple local keys and ssh-agent, be sure to add each key with ssh-add, you can also try prefixing your git commands (when interacting with the remote repo) with SSH_AUTH_SOCK=&amp;quot;&amp;quot;, which will make ssh not use the ssh-agent.&lt;/p&gt;</body>
    <created-at type="datetime">2008-04-24T16:24:28-07:00</created-at>
    <id type="integer">42</id>
    <permalink>multiple-github-accounts</permalink>
    <title>Multiple GitHub Accounts</title>
    <updated-at type="datetime">2009-10-19T05:13:40-07:00</updated-at>
    <user-id type="integer">140313</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Don&amp;#8217;t you hate when you can&amp;#8217;t remove that file full of cleartext passwords from your github account?  Even if you &lt;code&gt;git rm&lt;/code&gt; it, it still is accessible in previous versions of the tree.  So, you need to rewrite the entire tree.  Fortunately, this is really easy with git.&lt;/p&gt;
&lt;h2&gt;How?&lt;/h2&gt;
&lt;pre class=&quot;console&quot;&gt;
git filter-branch -f --index-filter 'git update-index --remove filename' HEAD
git push --force --verbose --dry-run
git push --force
&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;filename&lt;/code&gt; is what you want to remove.  Now, when you browse past revisions, the file will be gone!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You will need to do &lt;code&gt;git push --force&lt;/code&gt; to push your changes, as this is no longer a fast forward push (the history and parents have been rewritten)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To retain tags you must specify &lt;code&gt;--tag-name-filter &quot;cat&quot;&lt;/code&gt; but note that &lt;strong&gt;this will overwrite your existing tags&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When doing this I usually create a backup like this:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
cd .git
mkdir backup
cp -r refs backup/refs
cp packed-refs backup
&lt;/pre&gt;
&lt;p&gt;since often I run filter-branch several times and you must delete &lt;code&gt;refs/original&lt;/code&gt; between runs.&lt;/p&gt;
&lt;h2&gt;An Improved Method&lt;/h2&gt;
&lt;p&gt;The method given above actually rewrites the whole repository history.  Usually, you&amp;#8217;ll only want to rewrite it from the revision the sensitive data was introduced:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
git filter-branch -f --index-filter 'git update-index --remove filename' &amp;lt;introduction-revision-sha1&amp;gt;..HEAD
git push --force --verbose --dry-run
git push --force
&lt;/pre&gt;
&lt;p&gt;Where introduction-revision-sha1 is the SHA1 that the file was first committed to the repository.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html&quot;&gt;git-filter-branch documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#cleaning-up-history&quot;&gt;Git user manual &amp;#8211; Cleaning up history&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-04-27T08:39:04-07:00</created-at>
    <id type="integer">43</id>
    <permalink>completely-remove-a-file-from-all-revisions</permalink>
    <title>Completely remove a file from all revisions</title>
    <updated-at type="datetime">2009-10-22T09:17:13-07:00</updated-at>
    <user-id type="integer">62842</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;What it is&lt;/h2&gt;
&lt;p&gt;The participation graph displays a user&amp;#8217;s participation to a given project aggregated by week. Basically, it shows how many commits a project had  in a week, and how many of those were made by the given user.&lt;/p&gt;
&lt;h2&gt;The data&lt;/h2&gt;
&lt;p&gt;The url to grab participation data for a given project is in the form of&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://github.com/cache/participation_graph/&lt;span style=&quot;color:green&quot;&gt;user&lt;/span&gt;/&lt;span style=&quot;color:red&quot;&gt;repo_name&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Let&amp;#8217;s take, for example, the following url:&lt;br /&gt;
&lt;a href=&quot;http://github.com/cache/participation_graph/rails/rails&quot;&gt;http://github.com/cache/participation_graph/rails/rails&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That would spit out rails&amp;#8217; participation in the rails repo.&lt;/p&gt;
&lt;h2&gt;What it means&lt;/h2&gt;
&lt;p&gt;At the time of this writing, the above url displays something like this:&lt;br /&gt;
&lt;pre&gt;BsCYA6BPAvAeAnAaAdArAwBHBPCgBwAsArBMBNAxA6AlARA7BZAqAeAyA2BZBhBNARAUAwBrBZAmBDB0BCAZBCBkBaBbAYAvAcA6DcBD
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The top line contains the total number of commits per week, the bottom line contains the number of commits made by the user.&lt;/p&gt;
&lt;p&gt;On each line, two characters make up an integer. Encoding is as follows :&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&amp;#8216;A&amp;#8217; .. &amp;#8216;Z&amp;#8217; = 0 .. 25&lt;/li&gt;
	&lt;li&gt;&amp;#8216;a&amp;#8217; .. &amp;#8216;z&amp;#8217; = 26 .. 51&lt;/li&gt;
	&lt;li&gt;&amp;#8216;0&amp;#8217; .. &amp;#8216;9&amp;#8217; = 52 .. 61&lt;/li&gt;
	&lt;li&gt;&amp;#8216;!&amp;#8217; = 62&lt;/li&gt;
	&lt;li&gt;&amp;#8216;-&amp;#8217; = 63&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which pretty much means that &amp;#8216;AA&amp;#8217; is 0, &amp;#8216;BA&amp;#8217; is 64, and so on. An implementation can be found &lt;a href=&quot;http://github.com/zmack/tribby/tree/master/src/ContributionFetcher.as#L55-77&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Make your own !&lt;/h2&gt;
&lt;p&gt;So what this really amounts to is that you can pretty much make your own contribution display graph, since you know what the data means and you partially know where to get it from.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;shameless plug&lt;/em&gt;: A decent starting point for this would be &lt;a href=&quot;http://github.com/zmack/tribby/tree/master&quot;&gt;Tribby&lt;/a&gt; which already does the fetching and decoding, so all that&amp;#8217;s left is putting the data in a decent form.&lt;/p&gt;</body>
    <created-at type="datetime">2008-06-01T06:36:51-07:00</created-at>
    <id type="integer">46</id>
    <permalink>making-sense-of-the-participation-graph-data</permalink>
    <title>Making sense of the participation graph data</title>
    <updated-at type="datetime">2009-08-17T01:12:38-07:00</updated-at>
    <user-id type="integer">52870</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;So, you&amp;#8217;ve cloned a repository, and hacked away at it; separated it into logical chunks, and it&amp;#8217;s now ready to submit!&lt;/p&gt;
&lt;p&gt;So you send your patch series, or publish your branch, and ask for a pull, but a quick review reveals that there are some errors in these patches!&lt;/p&gt;
&lt;p&gt;Now, the maintainer may send these patches back to you, and ask you to fix these, this guide shows several ways on how this can be accomplished&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Before you start, make sure you have a clean working tree (i.e. no modified files).&lt;/p&gt;
&lt;h1&gt;Using rebase -i&lt;/h1&gt;
&lt;p&gt;This is the most general (and easiest) way to edit history.&lt;/p&gt;
&lt;h2&gt;Invocation&lt;/h2&gt;
&lt;p&gt;The syntax is:&lt;br /&gt;
&lt;pre&gt;git rebase -i &lt;last-good-commit&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;For example:&lt;br /&gt;
&lt;pre&gt;git rebase -i master&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;This will then take you into your $&lt;span class=&quot;caps&quot;&gt;EDITOR&lt;/span&gt; with a file that looks like this:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
&lt;code&gt;pick 2394755 FocusedTextEdit: Removed the textCursor function.
pick 36369cd Remove Focused* classes in focusedwidgets.
pick 3064f94 FocusedTextEdit: Remove the clipboard handling.
pick b4d39e3 FocusedTextEdit: Removed the createPopupMenu function.
pick 8c0a5eb FocusedTextEdit: fixed constructor.
pick 2ea70f5 FocusedEdit: Rewrote wheelEvent to work with the new QAbstractScrollArea&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Rebase 96ded8d..2ea70f5 onto 96ded8d&lt;br /&gt;
#&lt;/li&gt;
	&lt;li&gt;Commands:&lt;/li&gt;
	&lt;li&gt;pick = use commit&lt;/li&gt;
	&lt;li&gt;edit = use commit, but stop for amending&lt;/li&gt;
	&lt;li&gt;squash = use commit, but meld into previous commit&lt;br /&gt;
#&lt;/li&gt;
	&lt;li&gt;If you remove a line here &lt;span class=&quot;caps&quot;&gt;THAT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;COMMIT&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;WILL&lt;/span&gt; BE &lt;span class=&quot;caps&quot;&gt;LOST&lt;/span&gt;.&lt;/li&gt;
	&lt;li&gt;However, if you remove everything, the rebase will be aborted.&lt;br /&gt;
#&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you change the order of the lines, the commits will be re-ordered.  We want to edit a patch, so we mark the commits we want to change as &amp;#8220;edit&amp;#8221;, and if we want to combine two commits, we mark them as squash&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#fn2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;pick 2394755 FocusedTextEdit: Removed the textCursor function.
pick 36369cd Remove Focused* classes in focusedwidgets.
edit 3064f94 FocusedTextEdit: Remove the clipboard handling.
squash b4d39e3 FocusedTextEdit: Removed the createPopupMenu function.
edit 8c0a5eb FocusedTextEdit: fixed constructor.
pick 2ea70f5 FocusedEdit: Rewrote wheelEvent to work with the new QAbstractScrollArea
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Note: &amp;#8220;squash&amp;#8221; means squash with the commit &lt;strong&gt;above&lt;/strong&gt; it.&lt;/p&gt;
&lt;h2&gt;Editing and splitting commits&lt;/h2&gt;
&lt;p&gt;To edit or split commits:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Mark the commit as &amp;#8220;edit&amp;#8221;&lt;/li&gt;
	&lt;li&gt;Close your editor (the rebase will begin)&lt;/li&gt;
	&lt;li&gt;When rebase reaches a commit marked &amp;#8220;edit&amp;#8221;, it will stop with a message like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;Rebasing (3/6)
You can amend the commit now, with

        git commit --amend

Once you are satisfied with your changes, run

        git rebase --continue
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
	&lt;li&gt;Make your changes to the commit, or split the commits&lt;/li&gt;
	&lt;li&gt;add them, and commit with git commit &amp;#8212;amend (or use git-gui)&lt;/li&gt;
	&lt;li&gt;type git rebase &amp;#8212;continue&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Addendum on splitting commits&lt;/h2&gt;
&lt;p&gt;I have personally found that the easiest way to split commits is to use &amp;#8220;git-gui&amp;#8221;.&lt;/p&gt;
&lt;p&gt;(I should put up a screencast of this)&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Open up git gui&lt;/li&gt;
	&lt;li&gt;Click &amp;#8220;Amend to last commit&amp;#8221;&lt;/li&gt;
	&lt;li&gt;Remove all the files from the commit&lt;/li&gt;
	&lt;li&gt;Click on a file you want to add&lt;/li&gt;
	&lt;li&gt;Right click on the part you want to add in the diff view&lt;/li&gt;
	&lt;li&gt;Click &amp;#8220;stage hunk for commit&amp;#8221;&lt;/li&gt;
	&lt;li&gt;Repeat for each hunk you want to commit&lt;/li&gt;
	&lt;li&gt;Write a commit message and commit&lt;/li&gt;
	&lt;li&gt;Go to step 3, and repeat until you&amp;#8217;ve re-added everything&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Example: squashing &amp;#8220;fix&amp;#8221; commits.&lt;/h2&gt;
&lt;p&gt;If your workflow is anything like mine, you&amp;#8217;ll find that you&amp;#8217;ll find several errors in your commits that you haven&amp;#8217;t published yet.&lt;/p&gt;
&lt;p&gt;In that case, I create a series of fix commits; say I have three commits, Patch A, Patch B, and Patch C; and I see an error in patches A and B:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ edit file1
$ git add file1
$ git commit -m &quot;Fix for Patch A&quot;
$ edit file2
$ git add file2
$ git commit -m &quot;Fix for Patch B&quot;
$ git rebase -i master
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will take me to my text editor with the following file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pick aaaaaa Patch A
pick bbbbbb Patch B
pick cccccc Patch C
pick faaaaa Fix for Patch A
pick fbbbbb Fix for Patch B
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To squash these fixes into your patches A and B (so it looks like you&amp;#8217;ve never made the mistake in the first place!), change the file to look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pick aaaaaa Patch A
squash faaaaa Fix for Patch A
pick bbbbbb Patch B
squash fbbbbb Fix for Patch B
pick cccccc Patch C
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When rebase &amp;#8212;interactive hits a  &amp;#8220;squash&amp;#8221; item, it will send you to your editor to change the commit message (generally, you just have to remove the second commit message)&lt;/p&gt;
&lt;p&gt;Now you can format your patches again and send them upstream!&lt;/p&gt;
&lt;h2&gt;Footnotes&lt;/h2&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt; If others have branched off of the work you have doing, do &lt;em&gt;not&lt;/em&gt; modify any of the commits.  The rule in Git is that if you have work that people are working off of, you will make it hell for them if you change it.  Rebasing and amending are only for commits where you &lt;strong&gt;know&lt;/strong&gt; no one is working off of.&lt;/p&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn2&quot;&gt;&lt;sup&gt;2&lt;/sup&gt; In the upcoming 1.5.6, there will be new rebase -i commands &amp;#8220;tag&amp;#8221;, &amp;#8220;merge&amp;#8221;, and &amp;#8220;reset&amp;#8221;, as well.&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-commit.html&quot;&gt;git-commit documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html&quot;&gt;git-rebase documentation&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#cleaning-up-history&quot;&gt;Git user manual &amp;#8211; Cleaning up history&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-06-01T18:22:42-07:00</created-at>
    <id type="integer">47</id>
    <permalink>changing-a-series-of-commits-or-patches</permalink>
    <title>Changing a series of commits or patches.</title>
    <updated-at type="datetime">2008-09-14T12:10:41-07:00</updated-at>
    <user-id type="integer">21450</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Suppose you fork &lt;a href=&quot;http://github.com/wycats/merb-core/tree/master&quot;&gt;http://github.com/wycats/merb-core/tree/master&lt;/a&gt; by clicking on the &amp;#8220;fork&amp;#8221; button at the top of that page.&lt;br /&gt;
&lt;img src=&quot;http://img.skitch.com/20080303-q2aceaadcqk59kqck4b199bdmh.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(Image from the &lt;a href=&quot;http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch&quot;&gt;Rails on the Run tutorial&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;That copies the repository to your github account, with username &lt;code&gt;username&lt;/code&gt; (for example). Once you&amp;#8217;ve &lt;a href=&quot;http://github.com/guides/providing-your-ssh-key&quot;&gt;provided your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; key&lt;/a&gt;, you can &lt;a href=&quot;http://github.com/guides/getting-a-copy-of-your-github-repo&quot;&gt;check out this remote branch to a directory on your local computer&lt;/a&gt; with git&amp;#8217;s clone command:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
git clone git@github.com:username/merb-core.git&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The above command copies the repository to the directory in which it is run with the following remote reference in your &lt;code&gt;.git/config&lt;/code&gt; file&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
[remote &quot;origin&quot;]
	url = git@github.com:username/merb-core.git
	fetch = +refs/heads/*:refs/remotes/origin/*
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;To also be able to pull in updates from &lt;code&gt;wycats/merb-core&lt;/code&gt;, add it to your remote references:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
git remote add wycats git://github.com/wycats/merb-core.git&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The above command adds the following remote reference to your &lt;code&gt;.git/config&lt;/code&gt; file&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
[remote &quot;wycats&quot;]
	url = git://github.com/wycats/merb-core.git
	fetch = +refs/heads/*:refs/remotes/wycats/*
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;h2&gt;Manually Pull from Each Repository&lt;/h2&gt;
&lt;p&gt;Once the remote branch is created (You only have to do this once.), you can pull in new changes:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
git checkout master&lt;br /&gt;
git pull wycats master&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t wish for an automatic merge to happen, you can instead fetch and merge:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
git checkout master&lt;br /&gt;
git fetch wycats&lt;br /&gt;
git merge wycats/master&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;h2&gt;Shortcut: Pull from Both Repositories in One Command&lt;/h2&gt;
&lt;p&gt;NB: I&amp;#8217;m not sure why, but for this shortcut to work for me, I had to first pull manually once (as instructed above).&lt;/p&gt;
&lt;p&gt;To make things easier, you can create an alias that fetches from &lt;code&gt;origin&lt;/code&gt; and &lt;code&gt;wycats&lt;/code&gt; and octopus merges them with the current branch on your local machine. Paste the following in your &lt;code&gt;.git/config&lt;/code&gt; file&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;pre&gt;
[alias]
	pu = !&quot;git fetch origin -v; git fetch wycats -v; git merge wycats/master&quot;
&lt;/pre&gt;
&lt;p&gt;You can delete both &lt;code&gt;-v&lt;/code&gt;&amp;#8216;s, which stand for verbose, if you don&amp;#8217;t care for git to explain what&amp;#8217;s happening in detail. Now, all you have to type to stay completely up to date is:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
git pu&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt; To get a better understanding of git configuration files, go to the &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-config.html&quot;&gt;git-config(1) Manual Page&lt;/a&gt;, search for &amp;#8220;syntax&amp;#8221;, and read the first few paragraphs of the &amp;#8220;Configuration File&amp;#8221; section. Then, skim the &amp;#8220;Variables&amp;#8221; section to get a sense of what variables you can configure.&lt;/p&gt;
</body>
    <created-at type="datetime">2008-06-06T13:39:30-07:00</created-at>
    <id type="integer">48</id>
    <permalink>keeping-a-git-fork-in-sync-with-the-forked-repo</permalink>
    <title>Keeping a git fork in sync with the forked repo</title>
    <updated-at type="datetime">2009-08-16T09:57:14-07:00</updated-at>
    <user-id type="integer">106587</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/mac-git-installation/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/mac-git-installation/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-06-13T08:52:03-07:00</created-at>
    <id type="integer">50</id>
    <permalink>get-git-on-mac</permalink>
    <title>Get git on Mac</title>
    <updated-at type="datetime">2009-08-18T19:19:18-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;To set certain files or patterns to be ignored by Git, you must either modify the $GIT_DIR/info/exclude file or create a file called &lt;code&gt;.gitignore&lt;/code&gt; in your project&amp;#8217;s root directory. The former is not shared between repositories (so you can set ignores for your specific environment), while the &lt;code&gt;.gitignore&lt;/code&gt; is usually checked into Git and distributed along with everything else.&lt;/p&gt;
&lt;p&gt;By default $GIT_DIR/info/exclude looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# git-ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Both files use the same format for patterns and names.&lt;/p&gt;
&lt;p&gt;To exclude specific file types, you can add to the bottom:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*.log  # Will exclude all .log files&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To exclude all files in a specified path:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;path/to/ignore/files/*  # The path starts at the $GIT_DIR and not '/'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can also explicitly exclude certain files from being ignored by prepending a pattern with &lt;code&gt;!&lt;/code&gt;. Let&amp;#8217;s say you want to ignore all files starting with a dot, but you don&amp;#8217;t want Git to ignore the &lt;code&gt;.gitignore&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.* # Ignore all dotfiles...
!.gitignore # except for .gitignore&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To get more info on this topic, type &lt;code&gt;man gitignore&lt;/code&gt; on the command line to call up the manpage.&lt;/p&gt;</body>
    <created-at type="datetime">2008-06-23T07:48:15-07:00</created-at>
    <id type="integer">51</id>
    <permalink>ignore-for-git</permalink>
    <title>Ignore for Git</title>
    <updated-at type="datetime">2008-06-23T12:13:10-07:00</updated-at>
    <user-id type="integer">978</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;List the remote branches that exist for a repository you have cloned:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git remote show origin&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create a local branch that tracks one of the remote branches and then use that local branch:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git checkout --track -b name_of_local_branch origin/name_of_remote_branch&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you have not done a pull since someone else created the remote branch, you may first need to do:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git fetch&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;alternate syntax&lt;/h4&gt;
&lt;p&gt;&lt;code&gt; git fetch origin remote_branch_name:local_branch_name&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;found that above syntax works if you get this error message:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
git checkout: updating paths is incompatible with switching branches/forcing
Did you intend to checkout 'origin/cms' which can not be resolved as commit?
&lt;/code&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-06-23T08:44:28-07:00</created-at>
    <id type="integer">52</id>
    <permalink>showing-and-tracking-remote-branches</permalink>
    <title>Showing and tracking remote branches</title>
    <updated-at type="datetime">2009-09-14T11:15:12-07:00</updated-at>
    <user-id type="integer">40606</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;We highly recommend you use the &lt;a href=&quot;http://repo.or.cz/w/git.git?a=blob_plain;f=contrib/completion/git-completion.bash;hb=master&quot;&gt;git completion&lt;/a&gt; file from the contrib dir in git, and put &lt;code&gt;\$(__git_ps1 &quot; %s&quot;)&lt;/code&gt; somewhere in the PS1 in your .bashrc file, like in &lt;a href=&quot;http://gist.github.com/151759&quot;&gt;this gist&lt;/a&gt;:&lt;/p&gt;
&lt;script src=&quot;http://gist.github.com/151759.js&quot;&gt;&lt;/script&gt;&lt;p&gt;If you would like a simpler solution, drop the contents of &lt;a href=&quot;http://gist.github.com/5129&quot;&gt;this gist&lt;/a&gt; into your .bashrc file (of course, edit as you see fit).&lt;/p&gt;
&lt;script src=&quot;http://gist.github.com/5129.js&quot;&gt;&lt;/script&gt;&lt;p&gt;There is also &lt;a href=&quot;http://github.com/lvv/git-prompt/&quot;&gt;more advanced git prompt&lt;/a&gt;  (&lt;a href=&quot;http://volnitsky.com/project/git-prompt&quot;&gt;docs/screenshots&lt;/a&gt;), and a cool project for &lt;span class=&quot;caps&quot;&gt;ZSH&lt;/span&gt; with something similar called &lt;a href=&quot;http://github.com/bkerley/zshkit&quot;&gt;zshkit&lt;/a&gt; .&lt;/p&gt;</body>
    <created-at type="datetime">2008-06-24T13:05:59-07:00</created-at>
    <id type="integer">53</id>
    <permalink>put-your-git-branch-name-in-your-shell-prompt</permalink>
    <title>put your git branch name in your shell prompt</title>
    <updated-at type="datetime">2009-08-16T21:05:44-07:00</updated-at>
    <user-id type="integer">12983</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;You can make your &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; formatted by putting &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; with specific extension.&lt;/p&gt;
&lt;h2&gt;Supported Formats&lt;/h2&gt;
&lt;table&gt;
	&lt;tr&gt;
		&lt;th&gt;format &lt;/th&gt;
		&lt;th&gt;extension &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href=&quot;http://rdoc.rubyforge.org/RDoc.html&quot;&gt;rdoc&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.rdoc &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href=&quot;http://daringfireball.net/projects/markdown/syntax&quot;&gt;Markdown&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.markdown, &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.md, &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.mdown, &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.mkd, &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.mkdn&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href=&quot;http://hobix.com/textile/&quot;&gt;Textile&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.textile &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;span class=&quot;caps&quot;&gt;PNG&lt;/span&gt; &lt;/td&gt;
		&lt;td&gt; &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.png (will display the image) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href=&quot;http://docutils.sourceforge.net/rst.html&quot;&gt;reStructuredText&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.rst &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; (no formatting) &lt;/td&gt;
		&lt;td&gt; &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.* (all but above extensions), &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; (no extension) &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;h2&gt;Unsupported Formats&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;rd (&lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.rd)&lt;/li&gt;
	&lt;li&gt;html (&lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.html &amp;#8212; considered insecure)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;If there is both &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.foo, &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.foo is displayed.&lt;/li&gt;
	&lt;li&gt;feature request: &lt;a href=&quot;http://logicalawesome.lighthouseapp.com/projects/8570/tickets/38-format-readmes-without-an-extension&quot;&gt; format READMEs without an extension&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;feature request: &lt;a href=&quot;http://en.wikipedia.org/wiki/Plain_Old_Documentation&quot;&gt;&lt;span class=&quot;caps&quot;&gt;POD&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;feature request: &lt;a href=&quot;http://www.methods.co.nz/asciidoc/&quot;&gt;AsciiDoc&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;feature request: TiddlyWiki Syntax&lt;/li&gt;
	&lt;li&gt;feature request: Something MediaWiki like such as &lt;a href=&quot;http://mediacloth.rubyforge.org/&quot;&gt;MediaCloth&lt;/a&gt; or &lt;a href=&quot;https://rubyforge.org/projects/wikicreole/&quot;&gt;WikiCreole&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;feature request: &lt;a href=&quot;http://txt2tags.sourceforge.net&quot;&gt;txt2tags&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;reStructuredText&lt;/strong&gt;: there are certain, specific kinds of content that will cause the .rst renderer to fail. In particular, certain non-latin unicode glyphs will cause &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.rst&amp;#8217;s to not render on github while rendering perfectly happily using rst2html.py. If your &lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt;.rst will not render, try looking for unusual content in your .rst and stripping it out, and seeing if that has an effect.&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-07-03T00:13:34-07:00</created-at>
    <id type="integer">54</id>
    <permalink>readme-formatting</permalink>
    <title>README Formatting</title>
    <updated-at type="datetime">2009-11-05T20:17:11-08:00</updated-at>
    <user-id type="integer">83137</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide was moved to [[Compiling and installing git on Mac OS X]]&lt;/p&gt;</body>
    <created-at type="datetime">2008-07-11T13:16:22-07:00</created-at>
    <id type="integer">55</id>
    <permalink>compiling-git-on-os-x-leopard</permalink>
    <title>Compiling git on OS X Leopard</title>
    <updated-at type="datetime">2009-02-16T20:48:04-08:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;What if my GitHub repository is corrupted or deleted?&lt;/h2&gt;
&lt;p&gt;Don&amp;#8217;t Panic!  Because of the distributed nature of git, everyone always has a local full copy of the repository, complete with history.  Any of your repositories, assuming they have been kept up to date, can be uploaded to the GitHub repository with no loss of data.&lt;/p&gt;
&lt;p&gt;If the universe is conspiring against you and all copies of your repository are unaccessible, just email support@github.com &amp;#8211; we keep offsite, encrypted backups of all repositories.&lt;/p&gt;
&lt;h2&gt;How can I share my repository if GitHub goes down?&lt;/h2&gt;
&lt;p&gt;Luckily, git has a &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html&quot;&gt;built in server&lt;/a&gt; for sharing git repositories.  If you have several repositories in your Code directory:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
  /Users/Matt/Documents/Code/&lt;br /&gt;
    rbvimeo/&lt;br /&gt;
    rubyzilla/&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
You can serve all of these with the following command:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
  git daemon &amp;#8212;base-path=/Users/Matt/Documents/Code/ &amp;#8212;export-all&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
The repositories can then be cloned using the address of your computer&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
  git clone git://127.0.0.1/rbvimeo&lt;br /&gt;
  git clone git://127.0.0.1/rubyzilla&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Note: The default port git uses is 9418.  Make sure that your firewall is set up to handle this.&lt;/p&gt;
&lt;h2&gt;How can I get a quick web interface?&lt;/h2&gt;
&lt;p&gt;You can run git instaweb to quickly start a network-accessible gitweb interface, for example:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;br /&gt;
   git instaweb &amp;#8212;httpd=webrick&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;h2&gt;How do I deploy my application with Capistrano when GitHub is down?&lt;/h2&gt;
&lt;p&gt;There are quite a few ways to deploy without github&amp;#8230; ah the wonders of git!&lt;/p&gt;
&lt;h3&gt;Deploy from a local git server&lt;/h3&gt;
&lt;p&gt;Set up your repositories to be shared using git-daemon as detailed above.  Set your capistrano config files to point the repository to your local repository:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
  set :repository, &amp;#8220;git://YOUR_IP/rails-app&amp;#8221;&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
You can now deploy your repository as normal.&lt;/p&gt;
&lt;h3&gt;Push over ssh&lt;/h3&gt;
&lt;p&gt;Another handy trick is to push the repo to your deploy server over ssh, then deploy using the local path. For this to work, you need ssh access to your deploy server, of course.&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
  scp -r myrepo.git ssh://myuser@myserver.com/~/myrepo.git
  git remote add deployserver ssh://myuser@myserver.com/~/myrepo.git
  git push deployserver master
&lt;/pre&gt;
&lt;p&gt;Assuming your users are stored in &lt;code&gt;/home&lt;/code&gt;&amp;#8230;&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;
  set :repository, &quot;/home/myuser/myrepo&quot;
  set :local_repository, &quot;#{File.dirname(__FILE__)}/../&quot;
&lt;/pre&gt;</body>
    <created-at type="datetime">2008-07-14T09:24:08-07:00</created-at>
    <id type="integer">56</id>
    <permalink>disaster-faq-what-to-do-when-github-goes-bad</permalink>
    <title>Disaster FAQ: What to do when GitHub goes bad</title>
    <updated-at type="datetime">2008-11-17T12:31:40-08:00</updated-at>
    <user-id type="integer">2720</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Check the Troubleshooting instructions at &lt;a href=&quot;http://gems.github.com/&quot;&gt;http://gems.github.com/&lt;/a&gt;.&lt;/p&gt;</body>
    <created-at type="datetime">2008-07-14T12:15:12-07:00</created-at>
    <id type="integer">57</id>
    <permalink>why-won-t-my-rubygem-build</permalink>
    <title>Why won't my RubyGem build?</title>
    <updated-at type="datetime">2008-07-14T12:19:16-07:00</updated-at>
    <user-id type="integer">5656</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;See &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-tag.html&quot;&gt;git-tag&lt;/a&gt; on how to create a tag.&lt;br /&gt;
E.g:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; git tag -a -m &quot;tagging version 1.0&quot; 1.0&lt;span&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Use git-push with the &amp;#8212;tags option to push them to the remote (github in this case).&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; git push --tags&lt;span&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;You can also push a single tag:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; git push origin tag name-of-tag&lt;span&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;h2&gt;Sign your tags with &lt;span class=&quot;caps&quot;&gt;GPG&lt;/span&gt; for increased security&lt;/h2&gt;
&lt;p&gt;You may want to sign your tag with your &lt;span class=&quot;caps&quot;&gt;GPG&lt;/span&gt; key for improved security. Assuming you have setup &lt;span class=&quot;caps&quot;&gt;GPG&lt;/span&gt; correctly on your system, you use the following command instead of the one mentioned above. You can push your tags as normal.&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; git tag -s -m &quot;tagging version 1.0&quot; 1.0&lt;span&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;Later you may validate the tag:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; git tag -v 1.0&lt;span&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;h2&gt;Delete existing tags&lt;/h2&gt;
&lt;p&gt;Deleting a tag locally is as simple as:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; git tag -d &quot;1.0&quot;&lt;span&gt;&lt;/pre&gt;
&lt;p&gt;To push the deletion to GitHub:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;span&gt;$&lt;/span&gt; git push origin :refs/tags/1.0&lt;span&gt;&lt;/pre&gt;
&lt;/p&gt;</body>
    <created-at type="datetime">2008-07-17T06:03:08-07:00</created-at>
    <id type="integer">58</id>
    <permalink>push-tags-to-github</permalink>
    <title>Push tags to github</title>
    <updated-at type="datetime">2009-09-10T08:02:34-07:00</updated-at>
    <user-id type="integer">2651</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;We are in the process of moving guides to &lt;a href=&quot;http://help.github.com/&quot;&gt;help.github.com&lt;/a&gt;.  If you can&amp;#8217;t find the guide you are looking for here, check to see if it&amp;#8217;s been moved already.&lt;/p&gt;
&lt;h2&gt;Setting Up&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Addressing authentication problems with &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt;]]&lt;/li&gt;
	&lt;li&gt;[[How to not have to type your password for every push]]&lt;/li&gt;
	&lt;li&gt;[[How to transparently clone from github with ssh tunnels]]
	&lt;ul&gt;
		&lt;li&gt;[[How to clone from github with ssh tunnels|Another method of setting up tunnels]]&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Working with git&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Git Screencasts]]&lt;/li&gt;
	&lt;li&gt;[[Git Podcasts]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Git for Mac&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Compiling and installing git on Mac OS X]]&lt;/li&gt;
	&lt;li&gt;[[Setting up a remote repository using GitHub and &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt;]]&lt;/li&gt;
	&lt;li&gt;[[Issues with TextMate set as git editor]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Git for Windows&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Using Git and GitHub for the Windows for newbies]]&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://beans.seartipy.com/2008/12/09/setting-up-ruby-on-rails-projects-with-git-and-github/&quot;&gt;Setting up a project with Git and GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Cross-platform Git&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Using the EGit Eclipse Plugin with GitHub]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Importing existing projects&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Import from Subversion]]&lt;/li&gt;
	&lt;li&gt;[[Changing Your Origin]]&lt;/li&gt;
	&lt;li&gt;[[Jump to github from your repository]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Everyday git&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Git Cheat Sheet]]&lt;/li&gt;
	&lt;li&gt;[[Remove a remote branch]]&lt;/li&gt;
	&lt;li&gt;[[Cool and unusual Git techniques]]&lt;/li&gt;
	&lt;li&gt;[[Changing a series of commits or patches.]]&lt;/li&gt;
	&lt;li&gt;[[Completely remove a file from all revisions]]&lt;/li&gt;
	&lt;li&gt;[[Change author details in commit history]]&lt;/li&gt;
	&lt;li&gt;[[put your git branch name in your shell prompt]]&lt;/li&gt;
	&lt;li&gt;[[Ignore for Git]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Remotes&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Push a Branch to GitHub]]&lt;/li&gt;
	&lt;li&gt;[[Push tags to github]]&lt;/li&gt;
	&lt;li&gt;[[Dealing with errors when pushing]]&lt;/li&gt;
	&lt;li&gt;[[Showing and tracking remote branches]]&lt;/li&gt;
	&lt;li&gt;[[Keeping a git fork in sync with the forked repo]]&lt;/li&gt;
	&lt;li&gt;[[Using git submodules to track plugins]]&lt;/li&gt;
	&lt;li&gt;[[Developing with Submodules]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Working with GitHub&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Getting a copy of your github repo]]&lt;/li&gt;
	&lt;li&gt;[[Pull Requests]]&lt;/li&gt;
	&lt;li&gt;[[Textile Formatting]]&lt;/li&gt;
	&lt;li&gt;[[Managing collaborators]]&lt;/li&gt;
	&lt;li&gt;[[How do I delete a repository?]]&lt;/li&gt;
	&lt;li&gt;[[Fork a project and submit your modifications]]&lt;/li&gt;
	&lt;li&gt;[[Managing multiple clients and their repositories]]&lt;/li&gt;
	&lt;li&gt;[[Multiple GitHub Accounts]]&lt;/li&gt;
	&lt;li&gt;[[How to move a repo to another account]]&lt;/li&gt;
	&lt;li&gt;[[Import an existing git repo]]&lt;/li&gt;
	&lt;li&gt;[[&lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; Formatting]]&lt;/li&gt;
	&lt;li&gt;[[Making sense of the participation graph data]]&lt;/li&gt;
	&lt;li&gt;[[Dealing with firewalls and proxies]]&lt;/li&gt;
	&lt;li&gt;[[GitHub and Firefox Ubiquity]]&lt;/li&gt;
	&lt;li&gt;[[Pages]]&lt;/li&gt;
	&lt;li&gt;[[Working with the Issue Tracker]]&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.github.com/github-flavored-markdown/&quot; title=&quot;comments syntax&quot;&gt;GitHub flavored markdown&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Deploying&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Deploying with Capistrano]]&lt;/li&gt;
	&lt;li&gt;[[Understanding deploy keys]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bugs and Feature Requests&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Disaster &lt;span class=&quot;caps&quot;&gt;FAQ&lt;/span&gt;: What to do when GitHub goes bad]]&lt;/li&gt;
	&lt;li&gt;[[Feature Requests]]&lt;/li&gt;
	&lt;li&gt;[[GitHub Bugs!]]&lt;/li&gt;
	&lt;li&gt;[[&amp;#8216;percent_expand: &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt; replacement&amp;#8217; Bug]]&lt;/li&gt;
	&lt;li&gt;[[I&amp;#8217;m missing my Gravatar icon on my commits]]&lt;/li&gt;
	&lt;li&gt;[[Syntax highlighting isn&amp;#8217;t working for my language]]&lt;/li&gt;
	&lt;li&gt;[[Why won&amp;#8217;t my RubyGem build?]]&lt;/li&gt;
	&lt;li&gt;[[Why aren&amp;#8217;t my commits shown in blue in the 52 Week Participation graphs?]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Developers&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/guides/local-github-config&quot;&gt;Local GitHub Config&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/blog/170-token-authentication&quot;&gt;Token Authentication&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;[[The GitHub &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;]]&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-07-22T14:11:01-07:00</created-at>
    <id type="integer">59</id>
    <permalink>home</permalink>
    <title>Home</title>
    <updated-at type="datetime">2009-10-16T20:07:39-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/moving-a-repo/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/moving-a-repo/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-07-22T15:21:33-07:00</created-at>
    <id type="integer">60</id>
    <permalink>how-to-move-a-repo-to-another-account</permalink>
    <title>How to move a repo to another account</title>
    <updated-at type="datetime">2009-08-18T19:21:02-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;It says &amp;#8220;error: failed to push to &amp;#8216;git://github.com/me/myrepo.git&amp;#8217;&amp;#8221; when I push. What gives?&lt;/h2&gt;
&lt;p&gt;Addresses that start with git:// are read only. In order to push, you must use the &amp;#8220;git@github.com:me/myrepo.git&amp;#8221; address listed as &amp;#8220;Push &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt;&amp;#8221; in the repo info for your repository.&lt;/p&gt;
&lt;h2&gt;error: &amp;#8220;failed to push some refs to &amp;#8217;git@github.com:me/myrepo.git&amp;#8221;&lt;/h2&gt;
&lt;h3&gt;As a consequence of rewriting history or reset-ing to not current head&lt;/h3&gt;
&lt;p&gt;You might get this error after rewriting history in your local repo or reset-ing to not current head.  Try to run &lt;code&gt;git pull&lt;/code&gt; first.  If it doesn&amp;#8217;t work and your tree looks (&lt;code&gt;gitk --all&lt;/code&gt;) like:&lt;br /&gt;
&lt;pre&gt;            A&amp;#8212;B&amp;#8212;C    &amp;lt;&amp;#8212; master&lt;br /&gt;
           /&lt;br /&gt;
    o&amp;#8212;o&amp;#8212;X&lt;br /&gt;
           \&lt;br /&gt;
            Y-Z    &amp;lt;&amp;#8212; remotes/origin/master&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;try to rewrite it with (assuming you&amp;#8217;re on the master branch):&lt;/p&gt;
&lt;pre&gt;
    git rebase origin/master
&lt;/pre&gt;
&lt;p&gt;which should make:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
                  A&amp;#8217;&amp;#8212;B&amp;#8217;&amp;#8212;C&amp;#8217;  &amp;lt;&amp;#8212; master&lt;br /&gt;
                 /&lt;br /&gt;
    o&amp;#8212;o&amp;#8212;X&amp;#8212;Y&amp;#8212;Z  &amp;lt;&amp;#8212; remotes/origin/master&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re absolutely sure that your local branch is the correct one and you want to drop all diverging commits on the remote, you can use the following command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; this will not only destroy the history on the remote, it might also give an error message to anyone who updates from the same remote (depending on how much history you rewrite). Use this only as the very last resort.&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
    git push &amp;#8212;force origin master&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;h3&gt;As a consequence of renaming branches clashing with existing branches&lt;/h3&gt;
&lt;p&gt;Let us say you have a local branch &amp;#8216;demo&amp;#8217; which has been pushed to github. You can rename the local branch from &amp;#8216;demo&amp;#8217; to &amp;#8216;demo/base&amp;#8217; and try pushing that and you will get an error like this:&lt;/p&gt;
&lt;pre&gt;
error: 'refs/heads/demo' exists; cannot create 'refs/heads/demo/base'
error: failed to lock refs/heads/demo/base
To git@github.com:user/repos.git
 ! [remote rejected] demo/base -&amp;gt; demo/base (failed to lock)
error: failed to push some refs to 'git@github.com:user/repos.git'
&lt;/pre&gt;
&lt;p&gt;The trick is to delete the origin/demo branch (assuming &amp;#8216;origin&amp;#8217; is github) first before pushing:&lt;/p&gt;
&lt;pre&gt;
$ git push origin :demo
$ git push origin demo/base
&lt;/pre&gt;
&lt;h2&gt;error: src refspec &lt;foo&gt; does not match any.&lt;/h2&gt;
&lt;p&gt;this is followed by the previous &amp;#8220;failed to push some refs&amp;#8221; error, which looks coincidental here.&lt;br /&gt;
Forcing didnt help either.&lt;/p&gt;</body>
    <created-at type="datetime">2008-07-22T15:31:02-07:00</created-at>
    <id type="integer">61</id>
    <permalink>dealing-with-errors-when-pushing</permalink>
    <title>Dealing with errors when pushing</title>
    <updated-at type="datetime">2009-08-14T03:30:04-07:00</updated-at>
    <user-id type="integer">10751</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;We use the excellent &lt;a href=&quot;http://pygments.org/&quot;&gt;pygments&lt;/a&gt; library for our syntax highlighting. Check their list of &lt;a href=&quot;http://pygments.org/languages/&quot;&gt;supported languages&lt;/a&gt; and learn how to specify a lexer for yours. If you contribute a lexer back to pygments, let us know and we&amp;#8217;ll make sure it&amp;#8217;s made available here on github.&lt;/p&gt;</body>
    <created-at type="datetime">2008-07-22T15:34:51-07:00</created-at>
    <id type="integer">62</id>
    <permalink>syntax-highlighting-isn-t-working-for-my-language</permalink>
    <title>Syntax highlighting isn't working for my language</title>
    <updated-at type="datetime">2008-07-22T15:34:51-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;In order to match you with your commits, we compare your github.com email addresses with the email address in each commit. If you committed under a different email address, you will not be given credit for those commits. You can add more email addresses on your account page.&lt;/p&gt;</body>
    <created-at type="datetime">2008-07-22T15:35:51-07:00</created-at>
    <id type="integer">63</id>
    <permalink>why-aren-t-my-commits-shown-in-blue-in-the-52-week-participation-graphs</permalink>
    <title>Why aren't my commits shown in blue in the 52 Week Participation graphs?</title>
    <updated-at type="datetime">2008-07-22T15:35:51-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;Why am I getting &amp;#8220;fatal: no commit message?  aborting commit.&amp;#8221;?&lt;/h2&gt;
&lt;p&gt;Git needs to wait for TextMate to close the commit log message file.  You do so by using &amp;#8220;mate -w&amp;#8221;.  There are many ways to set the editor that git uses; according to the git docs: &amp;#8220;The editor used to edit the commit log message will be chosen from the GIT_EDITOR environment variable, the core.editor configuration variable, the &lt;span class=&quot;caps&quot;&gt;VISUAL&lt;/span&gt; environment variable, or the &lt;span class=&quot;caps&quot;&gt;EDITOR&lt;/span&gt; environment variable (in that order).&amp;#8221;  You can set it like so:&lt;br /&gt;
&lt;code&gt;git config --global core.editor &quot;mate -w&quot;&lt;/code&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-07-22T15:42:42-07:00</created-at>
    <id type="integer">64</id>
    <permalink>issues-with-textmate-set-as-git-editor</permalink>
    <title>Issues with TextMate set as git editor</title>
    <updated-at type="datetime">2009-08-27T21:46:59-07:00</updated-at>
    <user-id type="integer">43212</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Are you a freelance developer working on multiple projects for multiple clients, and want to manage them here on GitHub?  Never fear, this guide will detail the most common solutions to this problem&lt;/p&gt;
&lt;h2&gt;One account, multiple collaborators&lt;/h2&gt;
&lt;p&gt;This design lets you retain control over the repos, but still gives your clients access to them.&lt;/p&gt;
&lt;p&gt;This is the simplest (and cheapest) approach.  Simply create one account with a plan that provides enough private repos to cover all your projects.  If your client needs access to the source code, have them create a free account.  You can then add their free account as a collaborator on the projects you wish for them to have access to.&lt;/p&gt;
&lt;p&gt;If you wish, you can even bill your clients for the cost of your account, and maintaining their repos on it!&lt;/p&gt;
&lt;h2&gt;Multiple accounts, one collaborator&lt;/h2&gt;
&lt;p&gt;This design gives the control over the repos (and the bill) to your client, but still allows you to push into all your clients&amp;#8217; repos from a single account.&lt;/p&gt;
&lt;p&gt;With this design, have your clients each open their own paid account and create empty repos for each project.  Add your account to the repos as a collaborator.  You can now push to their repos as if they were your own!&lt;/p&gt;
&lt;h2&gt;Multiple accounts, no collaborators&lt;/h2&gt;
&lt;p&gt;This is by far the most complicated setup, and should be avoided if at all possible.  If, for whatever reason, you &lt;strong&gt;must&lt;/strong&gt; push to each client&amp;#8217;s repos using &lt;em&gt;their&lt;/em&gt; account, this is the setup you will have to use.  Instructions on this design are detailed in the [[Multiple GitHub Accounts]] guide.&lt;/p&gt;</body>
    <created-at type="datetime">2008-08-01T15:39:55-07:00</created-at>
    <id type="integer">66</id>
    <permalink>managing-multiple-clients-and-their-repositories</permalink>
    <title>Managing multiple clients and their repositories</title>
    <updated-at type="datetime">2009-03-11T13:40:33-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/git-email-settings/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/git-email-settings/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-08-12T13:37:50-07:00</created-at>
    <id type="integer">67</id>
    <permalink>tell-git-your-user-name-and-email-address</permalink>
    <title>Tell git your user name and email address</title>
    <updated-at type="datetime">2009-08-18T13:58:49-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;This guide has been moved to &lt;a href=&quot;http://help.github.com/dealing-with-lineendings/&quot;&gt;help.github.com&lt;/a&gt;.  You should be redirected momentarily.&lt;/p&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.location = 'http://help.github.com/dealing-with-lineendings/'
&lt;/script&gt;</body>
    <created-at type="datetime">2008-08-21T13:15:58-07:00</created-at>
    <id type="integer">68</id>
    <permalink>dealing-with-newlines-in-git</permalink>
    <title>Dealing with newlines in git</title>
    <updated-at type="datetime">2009-10-05T01:10:59-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Deploy keys are a handy yet misunderstood feature here on github.  This guide will try to lay out when and how to use them instead of normal user keys.&lt;/p&gt;
&lt;h2&gt;What are deploy keys?&lt;/h2&gt;
&lt;p&gt;Deploy keys are ssh keys just like the ones you attach to your account to allow you to push to and pull from your repos.  The key difference is that deploy keys are designed to allow access to a single private repo.  This is intended for use on your staging or production server to pull in from your repo, most likely using a deploy tool like &lt;a href=&quot;http://www.capify.org/&quot;&gt;Capistrano&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Remember, keys are unique, you cannot use the same key on two repos, or on a repo and a user account.&lt;/p&gt;
&lt;h2&gt;When should I use a deploy key?&lt;/h2&gt;
&lt;p&gt;Simple, when you have a server that needs pull access to a single private repo.&lt;/p&gt;
&lt;h3&gt;I&amp;#8217;m working with public repos, do I still need deploy keys?&lt;/h3&gt;
&lt;p&gt;No!  You can simply use the public clone &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; for the project.&lt;/p&gt;
&lt;h3&gt;My server needs access to many private repos, how do I handle this?&lt;/h3&gt;
&lt;h4&gt;The best way&lt;/h4&gt;
&lt;p&gt;The best way is to add your server&amp;#8217;s key to the account for the repos&amp;#8217; owner.  This will allow the server access to any private repo that user owns or is a collaborator on.&lt;/p&gt;
&lt;h4&gt;Create a server specific account&lt;/h4&gt;
&lt;p&gt;If you don&amp;#8217;t want your deploy server to have access to every repo, you can make an account specifically for the server, attach its key to the account, and add that account as a collaborator to any repo you do want access to.  Another option is to use multiple deploy keys and employ the technique described in the [[Multiple GitHub Accounts]] guide.  Note that this method is somewhat complicated.&lt;/p&gt;
&lt;h4&gt;Use &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; config file&lt;/h4&gt;
&lt;p&gt;Open&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/.ssh/config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add the following lines:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;Host project1
	User git
	Hostname github.com
	IdentityFile [local path to private key half of github public key you provided]
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Then for the git clone command use project1 instead of github.com&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone git@project1:user/project.git&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Further reading&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Providing your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; Key]]&lt;/li&gt;
	&lt;li&gt;[[Deploying with Capistrano]]&lt;/li&gt;
	&lt;li&gt;[[Multiple GitHub Accounts]]&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-08-28T15:30:20-07:00</created-at>
    <id type="integer">69</id>
    <permalink>understanding-deploy-keys</permalink>
    <title>Understanding deploy keys</title>
    <updated-at type="datetime">2008-12-16T23:56:25-08:00</updated-at>
    <user-id type="integer">3761</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;This guide was moved to [[Managing collaborators]]&lt;/h2&gt;</body>
    <created-at type="datetime">2008-11-11T17:19:14-08:00</created-at>
    <id type="integer">73</id>
    <permalink>removing-a-collaborator-from-a-repo</permalink>
    <title>Removing a collaborator from a repo</title>
    <updated-at type="datetime">2009-01-23T14:13:14-08:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Ah corporate networks, such a pain.  Are you stuck behind a firewall or proxy and can&amp;#8217;t git to github?  Here&amp;#8217;s a few guides to help:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://blog.codeslower.com/2008/8/Using-PuTTY-and-SSL-to-securely-access-GitHub-repositories-via-SSH&quot; title=&quot;port 443&quot;&gt;Connecting to github over &lt;span class=&quot;caps&quot;&gt;HTTPS&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://dilipm79.blogspot.com/2008/11/why-i-love-git-and-github.html&quot;&gt;Specific instructions on pushing over &lt;span class=&quot;caps&quot;&gt;HTTPS&lt;/span&gt; if behind a corporate firewall&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/blog/92-http-cloning&quot;&gt;&lt;span class=&quot;caps&quot;&gt;HTTP&lt;/span&gt; cloning&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;[[How to transparently clone from github with ssh tunnels]]&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://returnbooleantrue.blogspot.com/2009/06/using-github-through-draconian-proxies.html&quot; title=&quot;Windows And Unix&quot;&gt;Using Github Through Draconian Proxies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2008-11-12T16:14:00-08:00</created-at>
    <id type="integer">74</id>
    <permalink>dealing-with-firewalls-and-proxies</permalink>
    <title>Dealing with firewalls and proxies</title>
    <updated-at type="datetime">2009-06-19T13:12:17-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;If you are using Firefox, and you have the Ubiquity plugin installed, a few awesome GitHub users have contributed Ubiquity commands for searching the GitHub site &amp;#8211; there is one for searching Git repositories and another for using the code search.&lt;/p&gt;
&lt;p&gt;You can install Ubiquity &lt;a href=&quot;https://wiki.mozilla.org/Labs/Ubiquity&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can subscribe to the repository search command &lt;a href=&quot;http://gist.github.com/19081&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And you can subscribe to the code search command &lt;a href=&quot;http://gist.github.com/26061&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Tim Gossett and Bastos for these commands.&lt;/p&gt;</body>
    <created-at type="datetime">2008-11-19T10:50:22-08:00</created-at>
    <id type="integer">76</id>
    <permalink>github-and-firefox-ubiquity</permalink>
    <title>GitHub and Firefox Ubiquity</title>
    <updated-at type="datetime">2009-01-27T06:42:41-08:00</updated-at>
    <user-id type="integer">48976</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;First, a warning&lt;/h2&gt;
&lt;p&gt;EGit/JGit is a reimplementation of git in java, due to this GitHub does not officially support it.  Issues have happened and repositories have been corrupted by them.  While it is usually a simple matter to repair these repos due to git&amp;#8217;s distributed nature, be aware that EGit may not work as well as the official git binaries.&lt;/p&gt;
&lt;p&gt;GitHub officially supports msysgit (openssh) on windows and precompiled or self-compiled binaries on mac and linux.  The following guide was submitted by a user and may be out of date.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Here&amp;#8217;s one way to bring Github into &lt;a href=&quot;http://www.eclipse.org&quot;&gt;Eclipse&lt;/a&gt;. I&amp;#8217;ll immediately declare myself as a newbie with both git and Github. There might be smarter and better ways to do things. If you know of them, please edit this guide and correct/add as appropriate. I&amp;#8217;ll also try to keep this guide focused on EGit. Installing Git on your OS and setting up your Github account and other issues are covered in the excellent Github &lt;a href=&quot;http://github.com/guides&quot;&gt;guides section&lt;/a&gt;. Actually I think there&amp;#8217;s not much (if anything) particular in using EGit with Github, but it&amp;#8217;s a fitting context on this site, wouldn&amp;#8217;t you agree? Further, I&amp;#8217;m going to assume you&amp;#8217;re working with a repository you can push to.&lt;/p&gt;
&lt;h2&gt;What&amp;#8217;s EGit anyway?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://git.or.cz/gitwiki/EclipsePlugin&quot;&gt;EGit&lt;/a&gt; is an Eclipse plugin that uses a pure Java implementation of Git (&lt;a href=&quot;http://www.jgit.org&quot;&gt;JGit&lt;/a&gt;) to enable Eclipse projects to be controlled by a Git repository. EGit is under rapid development, I&amp;#8217;m currently using version 0.3.1.20081024. As an Eclipse source control plugin it&amp;#8217;s not complete yet, but it has a lot going for it and gives you some goodies and visual clues on the state of your branch.&lt;/p&gt;
&lt;p&gt;Egit has moved to the eclipse project recently, integration snapshots are still available at the jgit.org update site mentioned below.&lt;/p&gt;
&lt;h2&gt;Installing EGit&lt;/h2&gt;
&lt;p&gt;Googling on the subject you easily get the impression that the way to install Egit is to download the source and build it yourself. But if you&amp;#8217;re a bit more lazy than that you can &lt;b&gt;add the EGit &lt;a href=&quot;http://www.jgit.org/updates&quot;&gt;update site&lt;/a&gt; to Eclipse and install it like any other plugin&lt;/b&gt;. That&amp;#8217;s what the &lt;a href=&quot;http://www.jgit.org/&quot;&gt;JGit site&lt;/a&gt; suggests. That&amp;#8217;s what I did.&lt;/p&gt;
&lt;h2&gt;Get your Eclipse project Git controlled&lt;/h2&gt;
&lt;p&gt;With the &lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt; and Subversion plugins I&amp;#8217;ve used you can import a project from the source repository, and that&amp;#8217;s what I tried to do with EGit too, but I can&amp;#8217;t get it to work. Here&amp;#8217;s what I do to work around that. The first step differs depending on if your uploading your project from Eclipse to Github or if your importing it from Github into Eclipse.&lt;/p&gt;
&lt;h3&gt;1a: Uploading your Eclipse project to Github&lt;/h3&gt;
&lt;p&gt;With a freshly created Github repository follow the instructions on how to set it up, except instead of making a new directory you cd to the root directory of your Eclipse project.&lt;/p&gt;
&lt;h3&gt;1b: Importing an existing Eclipse project from Github.&lt;br /&gt;
&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/8da868a8-dff5-48a1-b0c1-81a34655911c/00000010.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
Import the project from Github using Eclipse&amp;#8217;s Import feature.&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/50e09d79-6b19-4bee-9ec6-eef17916adae/00000011.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Next enter the repository &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; as represented on Github:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/f560a049-e65d-48aa-8be3-7ff5b007da0d/00000012.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You only need to fill the &lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt; field. EGit will parse it and fill the other fields for you. You&amp;#8217;ll be identifying using your ssh key so there&amp;#8217;s no password needed for the &lt;b&gt;git&lt;/b&gt; user. Unfortunately, the EGit plugin no longer parses git@github.com URLs correctly. Make sure to choose the git+ssh protocol and enter github.com as your host, correct the path and the &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; will be adjusted accordingly. The resulting &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; will look like this: git+ssh://git@github.com/&lt;user&gt;/&lt;repository&gt;.git&lt;/p&gt;
&lt;p&gt;(&lt;span class=&quot;caps&quot;&gt;TODO&lt;/span&gt;: update screenshot!)&lt;/p&gt;
&lt;p&gt;Then click &lt;b&gt;Next&lt;/b&gt; and when EGit looks for the available branches it&amp;#8217;ll ask for your ssh key pasword:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/3dbe00a1-f25d-4fa2-9e77-7ed1fd3f659b/00000013.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;(2009/10/17 &amp;#8211; error message: SSH2 Message &amp;#8211; The authenticity of host &amp;#8216;github.com&amp;#8217; can&amp;#8217;t be established.&lt;br /&gt;
 &lt;a href=&quot;http://code.google.com/p/egit/issues/detail?id=104&quot;&gt;solution&lt;/a&gt; )&lt;/p&gt;
&lt;p&gt;Then select the branch to check out and after clicking &lt;b&gt;Next&lt;/b&gt; it&amp;#8217;s time to choose where you want to clone the project to. Your Eclipse workspace works, but it&amp;#8217;s not a requirement.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/2065c21d-0c78-4468-b79d-d29bcad76846/00000014.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then click &lt;b&gt;Finish&lt;/b&gt;. The project won&amp;#8217;t show up in Eclipse yet, at least not with the version of EGit I&amp;#8217;m using. (Because of this you can also choose to clone it using command line git instead.)&lt;/p&gt;
&lt;p&gt;Then you need to Import it into Eclipse from the directory where you cloned it to. Looks like so for a Flex project:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/ed403bca-39f0-44df-8c3a-cf28d7f1c353/00000003.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2: Make Eclipse aware of the project&amp;#8217;s Gitness&lt;/h3&gt;
&lt;p&gt;OK, so you have an Eclipse project under git control, hosted on Github. But Eclipse doesn&amp;#8217;t know it yet. Here&amp;#8217;s how to fix that:&lt;/p&gt;
&lt;p&gt;1. From the Eclipse project context menu choose &lt;b&gt;Team&amp;#8594;Share&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/018174fe-5753-4e57-9034-33d75d92f143/00000002.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;2. Choose the Git repository type.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/93e9bb05-023a-46e7-aa06-b021cd774910/00000004.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;3. Select &lt;b&gt;Search for existing Git repositories&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/860c529b-d7dc-4b3c-90ae-4c5600858aa8/00000005.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Done! It&amp;#8217;s actually very few steps, just verbosely described.&lt;/p&gt;
&lt;h2&gt;Git operations from inside Eclipse&lt;br /&gt;
&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/1ab078c8-5911-42e1-97be-34a091a75de5/00000006.png&quot; alt=&quot;&quot; /&gt;&lt;/h2&gt;
&lt;p&gt;Cool, so now you have EGit going. The project Team submenu now looks much more interesting.&lt;/p&gt;
&lt;p&gt;As I&amp;#8217;m not kidding when I&amp;#8217;m saying I&amp;#8217;m a Git newbie I don&amp;#8217;t dare advise much on how to actually use EGit. All I&amp;#8217;ve tried so far is Add, Commit and Push on some test projects that I own myself and where I have no collaborators.&lt;/p&gt;
&lt;h3&gt;Pushing your changes&lt;br /&gt;
&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/e553dcd7-4583-4fda-b981-c643b60b98a7/00000007.png&quot; alt=&quot;&quot; /&gt;&lt;/h3&gt;
&lt;p&gt;The wizard for pushing changes is a bit confusing to me (because of my lacking Git understanding). Anyway, this works for me so far: At the first step I just click next, accepting the default repository config (should be the Github repo).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/912c19bb-3878-4401-a1aa-fd8e80202089/00000008.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Next step is quite crowded. I guess once you&amp;#8217;ve branched and such it&amp;#8217;ll seem clearer. But as long as you&amp;#8217;re working in the master branch all on your own it seems to work doing like the following pic suggests:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://content.screencast.com/users/CoBPEZ/folders/Jing/media/d5adf911-4c23-4fe9-b4fa-3057035d71be/00000009.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Hopefully I&amp;#8217;ll get some Gitting under my belt soon enough and can get back to updating this guide some. Of course, feel invited to edit this guide with any knowledge you have on the subject.&lt;/p&gt;</body>
    <created-at type="datetime">2008-11-23T15:19:21-08:00</created-at>
    <id type="integer">77</id>
    <permalink>using-the-egit-eclipse-plugin-with-github</permalink>
    <title>Using the EGit Eclipse Plugin with GitHub</title>
    <updated-at type="datetime">2009-10-19T08:56:18-07:00</updated-at>
    <user-id type="integer">119844</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Simple shell script to edit author details:&lt;/p&gt;
&lt;script src=&quot;http://gist.github.com/45856.js&quot;&gt;&lt;/script&gt;</body>
    <created-at type="datetime">2008-11-23T15:21:26-08:00</created-at>
    <id type="integer">78</id>
    <permalink>change-author-details-in-commit-history</permalink>
    <title>Change author details in commit history</title>
    <updated-at type="datetime">2009-01-11T18:17:07-08:00</updated-at>
    <user-id type="integer">45696</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Setting a local GitHub config tells apps like &lt;a href=&quot;http://github.com/Caged/gitnub&quot;&gt;GitNub&lt;/a&gt; and &lt;a href=&quot;http://github.com/pieter/gitx&quot;&gt;GitX&lt;/a&gt; who you are.&lt;/p&gt;
&lt;p&gt;When logged in, your &lt;a href=&quot;http://github.com/account&quot;&gt;account page&lt;/a&gt; provides simple copy &amp;amp; paste instructions for setting the config.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20081126-i39uhamy7yjpema5jb6aaab4f.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20081126-cmt7w2tr3w1sss3wxu3jhg1rsd.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Applications and scripts can easily access this information:&lt;/p&gt;
&lt;pre&gt;
$ git config --global github.user
defunkt
&lt;/pre&gt;
&lt;p&gt;You can also access ~/.gitconfig directly.&lt;/p&gt;
&lt;h3&gt;Keep Your Token Secret&lt;/h3&gt;
&lt;p&gt;It&amp;#8217;s like your password &amp;#8211; please keep it secret.&lt;/p&gt;
&lt;p&gt;Also: whenever you change your password, &lt;strong&gt;your token will also change&lt;/strong&gt;. So if your token gets out, change your GitHub password and you will be fine.&lt;/p&gt;</body>
    <created-at type="datetime">2008-11-25T16:55:16-08:00</created-at>
    <id type="integer">79</id>
    <permalink>local-github-config</permalink>
    <title>Local GitHub Config</title>
    <updated-at type="datetime">2008-11-25T17:05:15-08:00</updated-at>
    <user-id type="integer">2</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html&quot;&gt;Git Submodules&lt;/a&gt; are actually pretty great. Here&amp;#8217;s a simple way to manage submodule development from within an open source project.&lt;/p&gt;
&lt;p&gt;Say there&amp;#8217;s an Awesome Framework, and you want to write an open source plugin for it.&lt;/p&gt;
&lt;p&gt;First create the plugin.&lt;/p&gt;
&lt;p&gt;(the &amp;#8216;gh&amp;#8217; command comes from the &lt;a href=&quot;http://github.com/defunkt/github-gem&quot;&gt;Github gem&lt;/a&gt;)&lt;/p&gt;
&lt;pre&gt;
$ gh create my-fantastic-plugin
&lt;/pre&gt;
&lt;p&gt;Next clone the framework.&lt;/p&gt;
&lt;pre&gt;
$ gh clone defunkt/my-awesome-framework
$ cd my-awesome-framework
&lt;/pre&gt;
&lt;p&gt;Now add your plugin as a submodule to the framework.&lt;/p&gt;
&lt;pre&gt;
$ gh submodule add git://github.com/defunkt/my-fantastic-plugin.git plugins/my-fantastic-plugin
&lt;/pre&gt;
&lt;p&gt;Next &lt;code&gt;cd&lt;/code&gt; into the plugin and add your private &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; as a remote.&lt;/p&gt;
&lt;pre&gt;
$ cd plugins/my-fantastic-plugin
$ gh remote add push git@github.com:defunkt/my-fantastic-plugin.git
&lt;/pre&gt;
&lt;p&gt;And that&amp;#8217;s it. Make changes from within &lt;code&gt;my-awesome-framework/plugins/my-fantastic-plugin&lt;/code&gt; and, when you&amp;#8217;re ready, just &lt;code&gt;gh push push master&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Best of all: people cloning your &lt;code&gt;my-awesome-framework&lt;/code&gt; fork will have no problem pulling down your &lt;code&gt;my-fantastic-plugin&lt;/code&gt; submodule, as you&amp;#8217;ve registered the public clone &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; for the submodule. The commands&lt;/p&gt;
&lt;pre&gt;
$ gh submodule init
$ gh submodule update
&lt;/pre&gt;
&lt;p&gt;Will pull the submodules into the current repository.&lt;/p&gt;
&lt;p&gt;This is how I develop &lt;a href=&quot;http://github.com/defunkt/textmate.el&quot;&gt;textmate.el&lt;/a&gt; from within my &lt;a href=&quot;http://github.com/defunkt/emacs/tree/master/vendor&quot;&gt;Emacs config&lt;/a&gt; while keeping the submodule &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; public.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://img.skitch.com/20081126-qrn7p5xwmsi65d4sxdt83bc9u7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Check out &lt;a href=&quot;http://github.com/defunkt/my-awesome-framework&quot;&gt;my-awesome-framework&lt;/a&gt; to see this Guide&amp;#8217;s example in action.&lt;/p&gt;
&lt;p&gt;If you are deploying an application with capistrano and you want to use submodules.&lt;/p&gt;
&lt;pre&gt;
set :git_enable_submodules, 1
&lt;/pre&gt;</body>
    <created-at type="datetime">2008-11-25T18:31:27-08:00</created-at>
    <id type="integer">80</id>
    <permalink>developing-with-submodules</permalink>
    <title>Developing with Submodules</title>
    <updated-at type="datetime">2009-08-18T07:49:26-07:00</updated-at>
    <user-id type="integer">71336</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;What type of events will show up in the news feed?&lt;/p&gt;
CommitCommentEvent
CommitEvent
CreateEvent
DeleteEvent
FollowEvent
ForkApplyEvent
ForkEvent
GistEvent
GitHubEvent
GuideEvent
MemberEvent
PushEvent
WatchEvent
WikiEvent</body>
    <created-at type="datetime">2008-12-17T18:17:06-08:00</created-at>
    <id type="integer">81</id>
    <permalink>dashboard-events</permalink>
    <title>Dashboard Events</title>
    <updated-at type="datetime">2008-12-17T18:17:25-08:00</updated-at>
    <user-id type="integer">2</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;GitHub Pages are a way to setup a static page for your user or project on GitHub.&lt;/p&gt;
&lt;h3&gt;For the most up-to-date info on Pages, visit &lt;a href=&quot;http://pages.github.com/&quot;&gt;http://pages.github.com/&lt;/a&gt;&lt;/h3&gt;</body>
    <created-at type="datetime">2008-12-22T15:37:11-08:00</created-at>
    <id type="integer">82</id>
    <permalink>pages</permalink>
    <title>Pages</title>
    <updated-at type="datetime">2009-04-29T14:08:00-07:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;&lt;a href=&quot;http://rebase.github.com/howto.html&quot;&gt;This page has moved.&lt;/a&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2008-12-30T04:52:49-08:00</created-at>
    <id type="integer">83</id>
    <permalink>rebase-howto</permalink>
    <title>Rebase HOWTO</title>
    <updated-at type="datetime">2009-06-29T15:49:22-07:00</updated-at>
    <user-id type="integer">12610</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;&lt;a href=&quot;http://sohbeti.info/&quot;&gt;&lt;span style=&quot;text-decoration: none&quot;&gt;sohbet&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;
yapacaginiz bir mekanda sizlere en guzel inkani taniyoruz&lt;br&gt;
&lt;a href=&quot;http://www.netlog.gen.tr/&quot;&gt;&lt;span style=&quot;text-decoration: none&quot;&gt;netlog&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;
arkadaslik sistemi dunyaca unlu arkadas bulma sitesi&lt;br&gt;
&lt;a href=&quot;http://www.bayanarkadas.info/&quot;&gt;&lt;span style=&quot;text-decoration: none&quot;&gt;&lt;br /&gt;
bayan&lt;/span&gt;&lt;/a&gt; arkadas ariyorsaniz hemen msn adrsinizi yazin bayanlarla &lt;br /&gt;
konusmaya baslayin &lt;br&gt;
&lt;a href=&quot;http://www.bayanarkadas.info/&quot;&gt;&lt;span style=&quot;text-decoration: none&quot;&gt;kiz&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;
arkadas m&#305; ar&#305;yorsunuz ne duruyorsunuz ozmaan tam sizin istediginiz gibi bedava &lt;br /&gt;
free bir site&lt;br&gt;
&lt;a href=&quot;http://www.bayanarkadas.info/&quot;&gt;&lt;span style=&quot;text-decoration: none&quot;&gt;&lt;br /&gt;
arkadas&lt;/span&gt;&lt;/a&gt; yanlizmisin her turden arkadaslik imkani evli bekar dul &lt;br /&gt;
bosanm&#305;s ayr&#305;lm&#305;s yanliz nas&#305;l istersen sexi olanida var&lt;br&gt;
&lt;a href=&quot;http://www.sohbeti.info/&quot;&gt;&lt;span style=&quot;text-decoration: none&quot;&gt;sohbet &lt;br /&gt;
odalari&lt;/span&gt;&lt;/a&gt;&lt;br&gt;</body>
    <created-at type="datetime">2009-01-15T01:23:22-08:00</created-at>
    <id type="integer">84</id>
    <permalink>sohbet-turkce-sohbet-odalari</permalink>
    <title>sohbet  turkce sohbet odalari</title>
    <updated-at type="datetime">2009-01-15T01:23:22-08:00</updated-at>
    <user-id type="integer">46746</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;Opening the repo admin page&lt;/h2&gt;
&lt;h3&gt;From your dashboard, click the repo you wish to edit&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3462/3221303012_b65067aa58.jpg?v=0&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Click &amp;#8220;edit&amp;#8221; or &amp;#8220;Admin&amp;#8221;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3110/3221307362_d2b49a8194.jpg?v=0&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Adding a collaborator&lt;/h2&gt;
&lt;h3&gt;In the repo admin page, click &amp;#8220;Add another collaborator&amp;#8221;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3396/3220459807_33c59ec24c.jpg?v=0&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Type in the user&amp;#8217;s name, or part of it, select the user in the list, click &amp;#8220;Add&amp;#8221;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3302/3221311614_695359ded2.jpg?v=0&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Removing a collaborator&lt;/h2&gt;
&lt;h3&gt;Open the repo admin page, find the collaborator you wish to remove, click &amp;#8220;revoke&amp;#8221;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3477/3220461617_45dff379f2.jpg?v=0&quot; /&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2009-01-23T14:12:18-08:00</created-at>
    <id type="integer">85</id>
    <permalink>managing-collaborators</permalink>
    <title>Managing collaborators</title>
    <updated-at type="datetime">2009-01-23T14:12:18-08:00</updated-at>
    <user-id type="integer">706</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;Setting Up&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Tell git your user name and email address]]&lt;/li&gt;
	&lt;li&gt;[[Providing your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; Key]]&lt;/li&gt;
	&lt;li&gt;[[Addressing authentication problems with &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt;]]&lt;/li&gt;
	&lt;li&gt;[[How to not have to type your password for every push]]&lt;/li&gt;
	&lt;li&gt;[[How to clone from github with ssh tunnels]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Working with git&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Git Screencasts]]&lt;/li&gt;
	&lt;li&gt;[[Git Podcasts]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Git for Mac&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Compiling git on OS X Leopard]]&lt;/li&gt;
	&lt;li&gt;[[Get git on Mac]]&lt;/li&gt;
	&lt;li&gt;[[Setting up a remote repository using GitHub and &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt;]]&lt;/li&gt;
	&lt;li&gt;[[Issues with TextMate set as git editor]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Git for Windows&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Using Git and GitHub for the Windows for newbies]]&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://beans.seartipy.com/2008/12/09/setting-up-ruby-on-rails-projects-with-git-and-github/&quot;&gt;Setting up a project with Git and GitHub&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;[[Dealing with newlines in git]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Cross-platform Git&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Using the EGit Eclipse Plugin with GitHub]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Importing existing projects&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Import from Subversion]]&lt;/li&gt;
	&lt;li&gt;[[Changing Your Origin]]&lt;/li&gt;
	&lt;li&gt;[[Jump to github from your repository]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Everyday git&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Git Cheat Sheet]]&lt;/li&gt;
	&lt;li&gt;[[Remove a remote branch]]&lt;/li&gt;
	&lt;li&gt;[[Cool and unusual Git techniques]]&lt;/li&gt;
	&lt;li&gt;[[Changing a series of commits or patches.]]&lt;/li&gt;
	&lt;li&gt;[[Completely remove a file from all revisions]]&lt;/li&gt;
	&lt;li&gt;[[Change author details in commit history]]&lt;/li&gt;
	&lt;li&gt;[[put your git branch name in your shell prompt]]&lt;/li&gt;
	&lt;li&gt;[[Ignore for Git]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Remotes&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Push a Branch to GitHub]]&lt;/li&gt;
	&lt;li&gt;[[Push tags to github]]&lt;/li&gt;
	&lt;li&gt;[[Dealing with errors when pushing]]&lt;/li&gt;
	&lt;li&gt;[[Showing and tracking remote branches]]&lt;/li&gt;
	&lt;li&gt;[[Keeping a git fork in sync with the forked repo]]&lt;/li&gt;
	&lt;li&gt;[[Using git submodules to track plugins]]&lt;/li&gt;
	&lt;li&gt;[[Developing with Submodules]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Working with GitHub&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Getting a copy of your github repo]]&lt;/li&gt;
	&lt;li&gt;[[Pull Requests]]&lt;/li&gt;
	&lt;li&gt;[[Textile Formatting]]&lt;/li&gt;
	&lt;li&gt;[[Managing collaborators]]&lt;/li&gt;
	&lt;li&gt;[[How do I delete a repository?]]&lt;/li&gt;
	&lt;li&gt;[[Fork a project and submit your modifications]]&lt;/li&gt;
	&lt;li&gt;[[Managing multiple clients and their repositories]]&lt;/li&gt;
	&lt;li&gt;[[Multiple GitHub Accounts]]&lt;/li&gt;
	&lt;li&gt;[[How to move a repo to another account]]&lt;/li&gt;
	&lt;li&gt;[[Import an existing git repo]]&lt;/li&gt;
	&lt;li&gt;[[&lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; Formatting]]&lt;/li&gt;
	&lt;li&gt;[[Making sense of the participation graph data]]&lt;/li&gt;
	&lt;li&gt;[[Dealing with firewalls and proxies]]&lt;/li&gt;
	&lt;li&gt;[[GitHub and Firefox Ubiquity]]&lt;/li&gt;
	&lt;li&gt;[[Pages]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Service Hooks&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Post-Receive Hooks]]&lt;/li&gt;
	&lt;li&gt;[[Integrating git commit messages in Lighthouse]]&lt;/li&gt;
	&lt;li&gt;[[Lighthouse Post-Commit Hook]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Deploying&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Deploying with Capistrano]]&lt;/li&gt;
	&lt;li&gt;[[Understanding deploy keys]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bugs and Feature Requests&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Disaster &lt;span class=&quot;caps&quot;&gt;FAQ&lt;/span&gt;: What to do when GitHub goes bad]]&lt;/li&gt;
	&lt;li&gt;[[Feature Requests]]&lt;/li&gt;
	&lt;li&gt;[[GitHub Bugs!]]&lt;/li&gt;
	&lt;li&gt;[[&amp;#8216;percent_expand: &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt; replacement&amp;#8217; Bug]]&lt;/li&gt;
	&lt;li&gt;[[I&amp;#8217;m missing my Gravatar icon on my commits]]&lt;/li&gt;
	&lt;li&gt;[[Syntax highlighting isn&amp;#8217;t working for my language]]&lt;/li&gt;
	&lt;li&gt;[[Why won&amp;#8217;t my RubyGem build?]]&lt;/li&gt;
	&lt;li&gt;[[Why aren&amp;#8217;t my commits shown in blue in the 52 Week Participation graphs?]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Developers&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/guides/local-github-config&quot;&gt;Local GitHub Config&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/blog/170-token-authentication&quot;&gt;Token Authentication&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;[[The GitHub &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;]]&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2009-02-08T19:20:20-08:00</created-at>
    <id type="integer">86</id>
    <permalink>zh_tw_home</permalink>
    <title>zh_TW_home</title>
    <updated-at type="datetime">2009-02-08T19:20:20-08:00</updated-at>
    <user-id type="integer">42607</user-id>
  </guide>
  <guide>
    <body>&lt;h2&gt;&#35373;&#23450;&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/guides/gitemail&quot;&gt;&#22312;git&#20013;&#35373;&#23450;&#24744;&#30340;&#20351;&#29992;&#32773;&#33287;email&#20301;&#22336;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;[[Providing your &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; Key]]&lt;/li&gt;
	&lt;li&gt;[[Addressing authentication problems with &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt;]]&lt;/li&gt;
	&lt;li&gt;[[How to not have to type your password for every push]]&lt;/li&gt;
	&lt;li&gt;[[How to clone from github with ssh tunnels]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&#22312;git&#19978;&#38754;&#24037;&#20316;&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Git Screencasts]]&lt;/li&gt;
	&lt;li&gt;[[Git Podcasts]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&#22312;Mac&#19978;&#38754;&#20351;&#29992;Git&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Compiling git on OS X Leopard]]&lt;/li&gt;
	&lt;li&gt;[[Get git on Mac]]&lt;/li&gt;
	&lt;li&gt;[[Setting up a remote repository using GitHub and &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt;]]&lt;/li&gt;
	&lt;li&gt;[[Issues with TextMate set as git editor]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&#22312;Windows&#19978;&#20351;&#29992;git&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Using Git and GitHub for the Windows for newbies]]&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://beans.seartipy.com/2008/12/09/setting-up-ruby-on-rails-projects-with-git-and-github/&quot;&gt;Setting up a project with Git and GitHub&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;[[Dealing with newlines in git]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&#36328;&#24179;&#21488;&#30340; Git&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Using the EGit Eclipse Plugin with GitHub]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&#21295;&#20837;&#24050;&#26377;&#30340;&#23560;&#26696;&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Import from Subversion]]&lt;/li&gt;
	&lt;li&gt;[[Changing Your Origin]]&lt;/li&gt;
	&lt;li&gt;[[Jump to github from your repository]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Git&#24120;&#29992;&#21151;&#33021;&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Git Cheat Sheet]]&lt;/li&gt;
	&lt;li&gt;[[Remove a remote branch]]&lt;/li&gt;
	&lt;li&gt;[[Cool and unusual Git techniques]]&lt;/li&gt;
	&lt;li&gt;[[Changing a series of commits or patches.]]&lt;/li&gt;
	&lt;li&gt;[[Completely remove a file from all revisions]]&lt;/li&gt;
	&lt;li&gt;[[Change author details in commit history]]&lt;/li&gt;
	&lt;li&gt;[[put your git branch name in your shell prompt]]&lt;/li&gt;
	&lt;li&gt;[[Ignore for Git]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&#36960;&#31471;&#20351;&#29992;&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;[[Push a Branch to GitHub]]&lt;/li&gt;
	&lt;li&gt;[[Push tags to github]]&lt;/li&gt;
	&lt;li&gt;[[Dealing with errors when pushing]]&lt;/li&gt;
	&lt;li&gt;[[Showing and tracking remote branches]]&lt;/li&gt;
	&lt;li&gt;[[Keeping a git fork in sync with the forked repo]]&lt;/li&gt;
	&lt;li&gt;[[Using git submodules to track plugins]]&lt;/li&gt;
	&lt;li&gt;[[Developing with Submodules]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&#22312;GitHub&#19978;&#38754;&#20316;&#26989;&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Getting a copy of your github repo]]&lt;/li&gt;
	&lt;li&gt;[[Pull Requests]]&lt;/li&gt;
	&lt;li&gt;[[Textile Formatting]]&lt;/li&gt;
	&lt;li&gt;[[Managing collaborators]]&lt;/li&gt;
	&lt;li&gt;[[How do I delete a repository?]]&lt;/li&gt;
	&lt;li&gt;[[Fork a project and submit your modifications]]&lt;/li&gt;
	&lt;li&gt;[[Managing multiple clients and their repositories]]&lt;/li&gt;
	&lt;li&gt;[[Multiple GitHub Accounts]]&lt;/li&gt;
	&lt;li&gt;[[How to move a repo to another account]]&lt;/li&gt;
	&lt;li&gt;[[Import an existing git repo]]&lt;/li&gt;
	&lt;li&gt;[[&lt;span class=&quot;caps&quot;&gt;README&lt;/span&gt; Formatting]]&lt;/li&gt;
	&lt;li&gt;[[Making sense of the participation graph data]]&lt;/li&gt;
	&lt;li&gt;[[Dealing with firewalls and proxies]]&lt;/li&gt;
	&lt;li&gt;[[GitHub and Firefox Ubiquity]]&lt;/li&gt;
	&lt;li&gt;[[Pages]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Service Hooks&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Post-Receive Hooks]]&lt;/li&gt;
	&lt;li&gt;[[Integrating git commit messages in Lighthouse]]&lt;/li&gt;
	&lt;li&gt;[[Lighthouse Post-Commit Hook]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Deploying&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Deploying with Capistrano]]&lt;/li&gt;
	&lt;li&gt;[[Understanding deploy keys]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&#33261;&#34802;&#25552;&#22577;&#33287;&#20854;&#20182;&#35201;&#27714;&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;[[Disaster &lt;span class=&quot;caps&quot;&gt;FAQ&lt;/span&gt;: What to do when GitHub goes bad]]&lt;/li&gt;
	&lt;li&gt;[[Feature Requests]]&lt;/li&gt;
	&lt;li&gt;[[GitHub Bugs!]]&lt;/li&gt;
	&lt;li&gt;[[&amp;#8216;percent_expand: &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt; replacement&amp;#8217; Bug]]&lt;/li&gt;
	&lt;li&gt;[[I&amp;#8217;m missing my Gravatar icon on my commits]]&lt;/li&gt;
	&lt;li&gt;[[Syntax highlighting isn&amp;#8217;t working for my language]]&lt;/li&gt;
	&lt;li&gt;[[Why won&amp;#8217;t my RubyGem build?]]&lt;/li&gt;
	&lt;li&gt;[[Why aren&amp;#8217;t my commits shown in blue in the 52 Week Participation graphs?]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&#32102;&#38283;&#30332;&#32773;&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/guides/local-github-config&quot;&gt;Local GitHub Config&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://github.com/blog/170-token-authentication&quot;&gt;Token Authentication&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;[[The GitHub &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;]]&lt;/li&gt;
&lt;/ul&gt;</body>
    <created-at type="datetime">2009-02-08T19:22:52-08:00</created-at>
    <id type="integer">87</id>
    <permalink>87</permalink>
    <title>&#39318;&#38913;</title>
    <updated-at type="datetime">2009-02-08T19:40:36-08:00</updated-at>
    <user-id type="integer">42607</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;&#25945;&#23416;&#65306;&#22312;git&#20013;&#35373;&#23450;&#24744;&#30340;&#20351;&#29992;&#32773;&#33287;email&#20301;&#22336;&lt;br /&gt;
Git&#38656;&#35201;&#24744;&#30340;&#20351;&#29992;&#32773;&#33287;email&#20301;&#22336;&#20197;&#20415;&#24688;&#30070;&#30340;&#23531;&#20837;&#24744;&#30340;commits&#12290;&#36889;&#21487;&#20197;&#22312;&#20840;&#22495;&#35373;&#23450;&#20013;&#35373;&#23450;:&lt;/p&gt;
&lt;p&gt;$ git config &amp;#8212;global user.name &amp;#8220;mad voo&amp;#8221;&lt;br /&gt;
[~]$ git config &amp;#8212;global user.email mad.vooo@gmail.com&lt;/p&gt;
&lt;p&gt;&#24744;&#20063;&#21487;&#20197;&#22312;repo&#31684;&#22285;&#20013;&#35373;&#23450;:&lt;/p&gt;
&lt;p&gt;$ git config user.name &amp;#8220;mad voo&amp;#8221;&lt;br /&gt;
[~/path/to/repo]$ git config user.email mad.vooo@gmail.com&lt;br /&gt;
&#36889;&#20123;&#25913;&#35722;&#21482;&#26371;&#24433;&#38911;&#29246;&#24460;&#30340;commits&#12290;&#36942;&#21435;&#30340;commits&#20381;&#28982;&#26371;&#20445;&#30041;&#20182;&#20497;&#30070;&#21021;commit&#30340;&#26178;&#20505;&#30340;&#20351;&#29992;&#32773;&#33287;email&#20301;&#22336;&#12290;&lt;/p&gt;
&lt;p&gt;&#26377;&#20123;&#24037;&#20855;&#26371;&#20551;&#23450;&#24744;&#30340;github&#20301;&#22336;&#20381;&#28982;&#22312;&#33290;&#26377;&#30340;&#22320;&#26041; (http://github.com/blog/180-local-github-config):&lt;/p&gt;
&lt;p&gt;$ git config &amp;#8212;global github.user madvoo&lt;br /&gt;
[~]$ git config &amp;#8212;global github.token 6ef8395fecf207165f1a82178ae1b984&lt;/p&gt;
&lt;p&gt;(&#35352;&#24471;&#23559; madvoo &#33287; 6ef8395fecf207165f1a82178ae1b984 &#26367;&#25563;&#28858;&#24744;&#30340;&#20351;&#29992;&#32773;&#21517;&#31281;&#33287; token&#12290;)&lt;/p&gt;</body>
    <created-at type="datetime">2009-02-08T19:33:22-08:00</created-at>
    <id type="integer">88</id>
    <permalink>gitemail</permalink>
    <title>&#25945;&#23416;&#65306;&#22312;git&#20013;&#35373;&#23450;&#24744;&#30340;&#20351;&#29992;&#32773;&#33287;email&#20301;&#22336;</title>
    <updated-at type="datetime">2009-02-08T19:48:20-08:00</updated-at>
    <user-id type="integer">42607</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Git has a config option called &amp;#8216;core.gitproxy&amp;#8217; which allows you to use a command to tunnel the git:// protocol, which would normally go over &lt;span class=&quot;caps&quot;&gt;TCP&lt;/span&gt; port 9418. So in my case, I&amp;#8217;ve got a couple off-campus servers that I can use &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; tunnels with. I set up the typical &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt;-based &lt;span class=&quot;caps&quot;&gt;SOCKS&lt;/span&gt; proxy, thusly (you can also use apps like &lt;a href=&quot;http://www.shimoapp.com/&quot;&gt;Shimo&lt;/a&gt; to manage tunnels for you):&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ ssh -D 1080 tycho@hostname&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;NOTE&lt;/span&gt;: If you are using ssh shared connection(controlmaster/controlpath), you will have to disable it(forwarding is not yet implemented in shared connection)&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ ssh -S &quot;none&quot; -D 1080 tycho@hostname&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Then I use the tools which I&amp;#8217;ve made available in this &lt;a href=&quot;http://github.com/tycho/connect/tree/master&quot;&gt;git repository&lt;/a&gt; to make cloning with the git:// protocol tunnel through &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; run transparently.&lt;/p&gt;
&lt;p&gt;To use the tools, you need to first compile &amp;#8216;connect.c&amp;#8217; and install the &amp;#8216;connect&amp;#8217; binary to somewhere in your &lt;span class=&quot;caps&quot;&gt;PATH&lt;/span&gt; (/usr/local/bin should work for this). Modify the &amp;#8216;gitproxy&amp;#8217; script provided in the repository for your configuration (if you use the same command I used above, it should work fine without any editing). Once done editing it, install it as well.&lt;/p&gt;
&lt;p&gt;Now tell git about the gitproxy script you just installed:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ git config --global core.gitproxy gitproxy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or if you want to use it for a single repository, run the command without &amp;#8216;&amp;#8212;global&amp;#8217; while you&amp;#8217;re inside the working tree of the repository.&lt;/p&gt;
&lt;p&gt;Or if you want to use it temporarily, use &lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ export GIT_PROXY_COMMAND=gitproxy&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Once this is all done, you should be able to simply do a git clone without any special &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; mangling:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ git clone git://github.com/tycho/crisscross.git
Initialized empty Git repository in /Volumes/Development/crisscross/.git/
remote: Counting objects: 1322, done.
remote: Compressing objects: 100% (723/723), done.
remote: Total 1322 (delta 915), reused 874 (delta 586)
Receiving objects: 100% (1322/1322), 566.77 KiB | 60 KiB/s, done.
Resolving deltas: 100% (915/915), done.
$&lt;/code&gt;&lt;/pre&gt;</body>
    <created-at type="datetime">2009-02-12T13:03:23-08:00</created-at>
    <id type="integer">89</id>
    <permalink>how-to-transparently-clone-from-github-with-ssh-tunnels</permalink>
    <title>How to transparently clone from github with ssh tunnels</title>
    <updated-at type="datetime">2009-05-21T17:41:28-07:00</updated-at>
    <user-id type="integer">29616</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;There are precompiled versions available for &lt;a href=&quot;http://code.google.com/p/msysgit/&quot;&gt;Windows&lt;/a&gt;, Linux (via apt-get/yum/etc) and &lt;a href=&quot;http://code.google.com/p/git-osx-installer/&quot;&gt;Mac OS X&lt;/a&gt;. In addition to the precompiled versions, you can also install git via &lt;a href=&quot;http://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt;. However, if you want the most recent version, or to install it in a non-standard location, compiling it from source is actually very easy (on Mac OS X at least).&lt;/p&gt;
&lt;p&gt;You need to have Xcode installed, which provides a version of &lt;span class=&quot;caps&quot;&gt;GCC&lt;/span&gt;. The most recent version can be obtained for free from the &lt;a href=&quot;http://developer.apple.com/technology/xcode.html&quot;&gt;Apple Developer Connection&lt;/a&gt;. If you don&amp;#8217;t have a fast internet connection or have some other reason not to download Xcode via Apple&amp;#8217;s site, then you can always install Xcode from the Mac OS X &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; (from the folder labeled &amp;#8216;Optional Installs&amp;#8217;).&lt;/p&gt;
&lt;p&gt;You can download the latest stable version of git from &lt;a href=&quot;http://git-scm.com/&quot;&gt;git&amp;#8217;s website&lt;/a&gt;, in the form of a .tar.gz or .tar.bz2. The built in Mac OS X archiving utility can extract this for you, or you can extract it yourself:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:~ steven$ cd ~/Downloads
Alcarin:Downloads steven$ tar -xjf git-1.6.1.3.tar.bz2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then cd to the directory:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:Downloads steven$ cd git-1.6.1.3&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternatively, if you have a version of git already installed, you can get the source from the git repository (but be warned, it&amp;#8217;s less tested):&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:~ steven$ git clone git://git.kernel.org/pub/scm/git/git.git
Alcarin:~ steven$ cd git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It&amp;#8217;s recommended that when you install git, you put it in its own folder, i.e. /opt/git/ to keep things tidy. It&amp;#8217;s also far easier to remove or install new versions (as it&amp;#8217;s a single folder you can delete easily).&lt;/p&gt;
&lt;p&gt;Git comes with the appropriate files to allow you to use automake to generate a configure script and Makefile, but since a Makefile is already provided with git, it&amp;#8217;s generally unnecessary and more clunky to use automake (it&amp;#8217;s available, it&amp;#8217;s just discouraged).&lt;/p&gt;
&lt;p&gt;If you &lt;em&gt;really&lt;/em&gt; want to use automake, do this:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:git-1.6.1.3 steven$ autoreconf
Alcarin:git-1.6.1.3 steven$ ./configure --prefix=/opt/git
configure: CHECKS for programs
checking for cc... cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
[...]
Alcarin:git-1.6.1.3 steven$ make&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Otherwise, you can simply do:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:git-1.6.1.3 steven$ make prefix=/opt/git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On a Core 2 Duo 2.33GHz, building this way takes a minute and ten seconds. If you want it to build a bit faster and you have a multi-core machine, you can add the -j# flag to make (where # is a number, i.e. &amp;#8220;make -j2&amp;#8221;) to have it run more than one job at once. A good choice is the number of CPUs in your system plus one, but this guideline isn&amp;#8217;t always perfect.&lt;/p&gt;
&lt;p&gt;Next, you need to install the compiled binaries:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:git-1.6.1.3 steven$ sudo make install prefix=/opt/git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should note that the git man pages are not installed at this point. They&amp;#8217;re extremely helpful, so I recommend you install them. To do so, you first need to install &amp;#8216;asciidoc&amp;#8217; and &amp;#8216;xmlto&amp;#8217;, which can be installed through &lt;a href=&quot;http://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt;. If you haven&amp;#8217;t already done so, install MacPorts and then run this:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:git-1.6.1.3 steven$ sudo port install asciidoc xmlto&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will take a while, so go have a cup of coffee or some nachos.&lt;/p&gt;
&lt;p&gt;Once those are installed, build the man pages in the git source directory:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:git-1.6.1.3 steven$ make man prefix=/opt/git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And install them:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:git-1.6.1.3 steven$ sudo make install-man prefix=/opt/git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Great! Now you&amp;#8217;ve got git installed, along with its handy-dandy documentation. But before you celebrate with some beer and pizza (if it really means that much to you), you should make it easier to invoke git. With the way you currently have git installed, it&amp;#8217;s not in your &amp;#8220;&lt;span class=&quot;caps&quot;&gt;PATH&lt;/span&gt;&amp;#8221;, which means you have to type &amp;#8216;/opt/git/bin/git&amp;#8217; every time you want to invoke git. This is far more cumbersome than necessary. The best way to fix this is to add /opt/git/bin to your &lt;span class=&quot;caps&quot;&gt;PATH&lt;/span&gt;, so all you have to type is just &amp;#8216;git&amp;#8217;. I have a heavily customized .bash_profile file in my home directory which I use for this purpose:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for a in local $(ls /opt/ | grep -v local | grep -v gentoo); do
	FULLPATH=/opt/$a
	if [ -x $FULLPATH ]; then
		if [ -x $FULLPATH/bin ]; then
			export PATH=&quot;$FULLPATH/bin:$PATH&quot;
		fi
		if [ -x $FULLPATH/sbin ]; then
			export PATH=&quot;$FULLPATH/sbin:$PATH&quot;
		fi
		if [ -x $FULLPATH/share/aclocal ]; then
			export ACLOCAL_FLAGS=&quot;-I $FULLPATH/share/aclocal $ACLOCAL_FLAGS&quot;
		fi
		if [ -x $FULLPATH/man ]; then
			export MANPATH=&quot;$FULLPATH/man:$MANPATH&quot;
		fi
		if [ -x $FULLPATH/share/man ]; then
			export MANPATH=&quot;$FULLPATH/share/man:$MANPATH&quot;
		fi
		if [ -x $FULLPATH/lib/pkgconfig ]; then
			export PKG_CONFIG_PATH=&quot;$FULLPATH/lib/pkgconfig/:$PKG_CONFIG_PATH&quot;
		fi
	fi
done&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you open a new Terminal window, you should just be able to type &amp;#8216;git&amp;#8217; and it will behave as follows:&lt;/p&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;Alcarin:~ steven$ git
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find the change that introduced a bug by binary search
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and merge with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

See 'git help COMMAND' for more information on a specific command.
Alcarin:~ steven$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Congratulations! You now have a working git install on Mac OS X.&lt;/p&gt;</body>
    <created-at type="datetime">2009-02-16T20:47:29-08:00</created-at>
    <id type="integer">90</id>
    <permalink>compiling-and-installing-git-on-mac-os-x</permalink>
    <title>Compiling and installing git on Mac OS X</title>
    <updated-at type="datetime">2009-04-21T22:15:12-07:00</updated-at>
    <user-id type="integer">76392</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;Copy &lt;em&gt;oldbranch&lt;/em&gt; in &lt;em&gt;repo&lt;/em&gt; to &lt;em&gt;newbranch&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git push {repo} {oldbranch}:heads/{newbranch}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ex: &lt;code&gt;git push origin foobranch:barbranch&lt;/code&gt;&lt;br /&gt;
renames foobranch to barbranch&lt;/p&gt;</body>
    <created-at type="datetime">2009-06-18T23:44:44-07:00</created-at>
    <id type="integer">97</id>
    <permalink>copy-a-remote-branch</permalink>
    <title>Copy a remote branch</title>
    <updated-at type="datetime">2009-06-18T23:45:03-07:00</updated-at>
    <user-id type="integer">25494</user-id>
  </guide>
  <guide>
    <body>&lt;p&gt;git does not support it directly, but you can [[Copy a remote branch]] and [[Remove a remote branch]].&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;&lt;a href=&quot;http://github.com/webmat/git_remote_branch/tree/master&quot;&gt;git_remote_branch&lt;/a&gt;&lt;/tt&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2009-06-18T23:52:29-07:00</created-at>
    <id type="integer">98</id>
    <permalink>rename-a-remote-branch</permalink>
    <title>Rename a remote branch</title>
    <updated-at type="datetime">2009-06-18T23:52:29-07:00</updated-at>
    <user-id type="integer">25494</user-id>
  </guide>
  <guide>
    <body>&lt;h1&gt;Close issues from a commit message&lt;/h1&gt;
&lt;p&gt;During commit you can close any active issues in your issue tracker like so:&lt;br /&gt;
&lt;pre class=&quot;console&quot;&gt;&lt;code&gt;$ git commit -m &quot;fixed the damn IE6 bug. closes #41&quot;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;It will also create a comment on the issue with the message and add a link to the commit&amp;#8217;s &lt;span class=&quot;caps&quot;&gt;SHA&lt;/span&gt;.&lt;/p&gt;
&lt;h1&gt;Keyboard shortcuts&lt;/h1&gt;
&lt;p&gt;Press ? to bring up the shortcut menu.&lt;/p&gt;
&lt;p&gt;They are currently:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
  c Create issue&lt;br /&gt;
  l Create label&lt;br /&gt;
  i Back to inbox&lt;br /&gt;
  u Back to issues&lt;br /&gt;
  I Mark selected as read&lt;br /&gt;
  U Mark selected as unread&lt;br /&gt;
  e Close selected&lt;br /&gt;
  y Remove selected from view&lt;br /&gt;
  j Move target down&lt;br /&gt;
  k Move target up&lt;br /&gt;
  o Show target&lt;br /&gt;
  x Toggle select target&lt;br /&gt;
  ? Show hotkey help&lt;br /&gt;
  / Focus issues search&lt;br /&gt;
  enter Show target&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;
&lt;h1&gt;Other features&lt;/h1&gt;
&lt;ul&gt;
	&lt;li&gt;Create and apply labels to issues to assign to users or categorize&lt;/li&gt;
	&lt;li&gt;Drag and drop issues to prioritize them&lt;/li&gt;
	&lt;li&gt;Vote on issues that you want to see tackled&lt;/li&gt;
	&lt;li&gt;Search, sort, and filter&lt;/li&gt;
	&lt;li&gt;Keyboard shortcuts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Short video introduction to GitHub Issues&lt;/h2&gt;
&lt;p&gt;&lt;embed style=&quot;border: 1px solid #666;&quot; src=&quot;http://blip.tv/play/AfqxMgA&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;540&quot; height=&quot;367&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/p&gt;</body>
    <created-at type="datetime">2009-09-24T18:34:22-07:00</created-at>
    <id type="integer">102</id>
    <permalink>working-with-the-issue-tracker</permalink>
    <title>Working with the Issue Tracker</title>
    <updated-at type="datetime">2009-09-24T19:00:38-07:00</updated-at>
    <user-id type="integer">39191</user-id>
  </guide>
</guides>
