<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jonathanjulian.com &#187; git</title>
	<atom:link href="http://jonathanjulian.com/category/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanjulian.com</link>
	<description>Ruby, Rails, JavaScript, software development</description>
	<lastBuildDate>Fri, 13 Jan 2012 21:03:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>My favorite parts of RubyNation 2011</title>
		<link>http://jonathanjulian.com/2011/04/my-favorite-parts-of-rubynation-2011/</link>
		<comments>http://jonathanjulian.com/2011/04/my-favorite-parts-of-rubynation-2011/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 01:03:49 +0000</pubDate>
		<dc:creator>jonathan</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://jonathanjulian.com/?p=294</guid>
		<description><![CDATA[RubyNation was held this past weekend in Reston VA, and it was a success for the fourth year in a row. For being a (relatively) small regional conference, we consistently get to see quality speakers and draw Rubyists from North Carolina all the way to Philadelphia (and much further, I&#8217;m sure). I&#8217;ve been every year [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rubynation.org"><img alt="RubyNation 2011 badge" src="http://www.rubynation.org/images/conference/badges/2011/webBadgesConference.png" title="RubyNation 2011" class="alignright" width="180" height="135" /></a>
<a href="http://rubynation.org">RubyNation</a> was held this past weekend in Reston VA, and it was a success for the fourth year in a row. For being a (relatively) small regional conference, we consistently get to see quality speakers and draw Rubyists from North Carolina all the way to Philadelphia (and much further, I&#8217;m sure). I&#8217;ve been every year (it&#8217;s just a little over an hour from Baltimore), and I always have a great time. Here is what I thought were the best parts of RubyNation 2011.</p>

<h3>Hanging out with friends</h3>

<p>We always have a strong contingent of <a href="http://bmoreonrails.org">Bmore on Rails</a> folks at RubyNation. This weekend I twice received unsolicited praise that the Bmore on Rails group was &#8220;friendly and cohesive&#8221; and &#8220;one of the more fun local groups&#8221;. I&#8217;m paraphrasing, but it was awesome to hear that others see us this way. It&#8217;s true!</p>

<h3>Making new friends</h3>

<p>I can&#8217;t even count how many colleagues I&#8217;ve met at previous RubyNations! I don&#8217;t feel like I met <em>too</em> many new folks this year, but it&#8217;s still a big part of any local conference to me. If you met me (or even if you didn&#8217;t), make sure to keep in touch on twitter!</p>

<h3>The Talks</h3>

<p>I was lucky, I had already seen three of the sessions at Bmore on Rails in the last few months (&#8220;Fat Models Aren&#8217;t Enough&#8221; by <a href="http://jumpstartlab.com">Jeff Casimir</a>, &#8220;Confident Code&#8221; by <a href="http://avdi.org">Avdi Grimm</a>, and &#8220;KnowSQL: Database Tricks to Make Your Life Easier&#8221; by <a href="http://www.ngauthier.com/">Nick Gauthier</a>). This made it easy for me to see a couple of new talks.</p>

<h3>&#8220;Git: It&#8217;s All About the Trees, Baby&#8221; by <a href="http://scottchacon.com/">Scott Chacon</a></h3>

<p>Scott obviously knows git inside and out. The details are complex, and I&#8217;m mystified about it on a regular basis, even though I&#8217;ve been using it for over 3 years. I love how Scott slows down to ask, &#8220;Does that make sense?&#8221; after every difficult concept. I took feverish notes and re-read them a few times &#8211; after some digestion, yes, Scott, now it does make sense. I think. <a href="https://github.s3.amazonaws.com/presentations/three_trees.pdf">slides</a></p>

<h3>&#8220;Make Awesome Command Line Applications in Ruby&#8221; by <a href="http://www.naildrivin5.com/">David Copeland</a></h3>

<p>For some reason, this topic speaks to me. Maybe it was all the shell scripts I wrote early in my career, or my love for the &#8220;UNIX way&#8221; of building large systems from many small tools. This was one of those talks that probably snuck under the radar, but those who were there know that they took away a ton of knowledge. I&#8217;m looking forward to David&#8217;s upcoming PragProg book on the subject! <a href="http://awesome-cli-ruby.heroku.com/">slides</a></p>

<h3>&#8220;Search-Friendly Web Development&#8221; by <a href="http://luigimontanez.com/">Luigi Montanez</a></h3>

<p>It must be tough to be the first session of day 2 of a conference (wait, <a href="/2010/06/proof-that-i-was-at-jsconf-2010-hangover-js/">it is</a>). I wonder how many people were scared off by the thought of this being an &#8220;SEO&#8221; talk? Well, it was. And it was excellent. To web developers, SEO doesn&#8217;t have to be much more than checking off a few boxes. Really &#8211; it&#8217;s not crazy difficult. Luigi laid out 
a great plan to help your site be more successful: by optimizing crawling, indexing and ranking. 
I&#8217;ve been forced to learn a ton about this subject while working on <a href="http://replyz.com">replyz.com</a> &#8211; we have a footprint of close to 10 million urls, so managing searchability and the sitemaps has been one of my jobs for close to a year. Great job, Luigi! <a href="http://www.slideshare.net/luigimontanez/searchfriendly-web-development-at-rubynation">slides</a></p>

<h3>&#8220;The JavaScript Renaissance&#8221; by <a href="http://voodootikigod.com/">Chris Williams</a></h3>

<p>Chris is a showman. Did he really hand out 200 pirate hats? When his speakers weren&#8217;t loud enough, did he really voice-over <a href="http://www.youtube.com/watch?v=O2rGTXHvPCQ">the Numb3rs episode where they explain IRC</a>? And did he really convince a room full of Rubyists that their favorite language has strong competition from other programming languages? Yep.</p>

<h3>&#8220;Must. Try. Harder.&#8221; by <a href="http://www.keavy.co.uk/">Keavy McMinn</a></h3>

<p>Every conference needs at least one inspirational talk. And this one fit the bill perfectly. Keavy&#8217;s even-paced delivery and detailed descriptions of the agonies of triathlon training provided a great analogy to our software development careers. The video of the harrowing descent left the room silent for a full minute and a half. Well done!</p>

<h3>Jeff Casimir setting up his gear to take headshots</h3>

<p>Jeff is the coolest. He gives a brief lightning talk imploring everyone to use their <em>face</em> as their avatar, not a cartoon or a logo. Then he invites everyone to step out into the lobby where he has set up a temporary studio &#8211; complete with a backdrop and two remote flashes. Fifty people stepped up and got their photo taken, and Jeff posted the results to flickr the next morning. <strong>The next morning.</strong> Seriously, this guy is awesome. <strong>By the way, are you looking for Ruby or Rails training? Check out <a href="http://jumpstartlab.com/">Jumpstart Lab</a>.</strong> <em>(Also, why are so many folks afraid to step in front of a camera? You know we all can see you right now, right?)</em>
<br/>
<a href="http://www.flickr.com/photos/jcasimir/sets/72157626415670430/"><img alt="headshots taken by Jeff Casimir at RubyNation 2011" src="/wp-content/uploads/2011/04/j3-headshots.png" class="alignleft" width="420" style="margin-bottom:15px"/></a></p>

<h3>&#8220;Your code is awesome. Your copy sucks.&#8221;</h3>

<p>I love lightning talks &#8211; you never know what you&#8217;re gonna get, and the investment is low (5 minutes). This year my favorite was about copy writing (that&#8217;s the stuff between the tags that the user sees). Andrea from <a href="http://www.corgibytes.com/">corgibytes</a> let the uber-techie, male-dominated audience know that the words you write matter. I play the role of copy writer for a few minutes (!) every week, and I appreciate raising awareness about this under-appreciated skill.</p>

<h3>The Hacking</h3>

<p>There was considerably less code hacking this year &#8211; but we still fit some in. <a href="http://paulbarry.com/">Paul Barry</a> wrote a <a href="https://github.com/pjb3/Conflagration">Ruby chat server</a> in the few minutes leading up to Nick Gauthier&#8217;s talk. And I told <a href="http://webandy.com/">Andy Atkinson</a> my idea for listing members on <a href="http://bmoreonrails.org">bmoreonrails.org</a>, and he ran with it and started the feature! (hopefully we&#8217;ll have members listed on the site this week)</p>

<h3>The Party</h3>

<p>Github sponsored the drinks, Living Social sponsored the food. And it was at a Westin. Do I need to say more? If you were there, I&#8217;d love to hear your thoughts on the mini-burgers (I thought they were the coolest things ever).</p>

<h3>My Conclusion</h3>

<p>It was another fun local conference. Congrats to Gray Herter and David Keener and David Bock, and <a href="http://www.rubynation.org/organizers">everyone else</a> who organizes RubyNation every year. Keep in mind that these were <em>my</em> favorite parts of RubyNation &#8211; yours will most likely be different. What did you enjoy most about the conference? What did I miss?</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanjulian.com/2011/04/my-favorite-parts-of-rubynation-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>basic git</title>
		<link>http://jonathanjulian.com/2009/08/basic-git/</link>
		<comments>http://jonathanjulian.com/2009/08/basic-git/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 03:44:44 +0000</pubDate>
		<dc:creator>jonathan</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://jonathanjulian.com/?p=86</guid>
		<description><![CDATA[Sometimes I get asked, &#8220;hey I want to learn git, what should I do?&#8221;. My answer is usually somewhere between read the Pragmatic book, watch the Peepcode, or &#8220;hey, there are only a few commands you&#8217;ll use 80% of the time, I should write them down.&#8221; So if you just need some basic git, just to [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I get asked, &#8220;hey I want to learn git, what should I do?&#8221;. My answer is usually somewhere between <a href="http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git">read the Pragmatic book</a>, watch the <a href="http://peepcode.com/products/git">Peepcode</a>, or &#8220;hey, there are only a few commands you&#8217;ll use 80% of the time, I should write them down.&#8221;</p>

<p>So if you just need some basic git, just to get by, this post is for you. Note that this just glosses over the basic commands, you&#8217;ll want to use the man pages and resources on the web such as the free book <a href="http://progit.org/book/">Pro Git</a> to learn more.</p>

<h3>git clone</h3>

<p><span style="font-weight: normal; font-size: 13px; ">This makes a copy of the passed repository and puts it on your machine. Note that <em>git clone</em> will create the directory called &#8216;ext-extensions&#8217; for you. This is the first step to working with an established repository.</span>
<pre>$ git clone git@github.com:jjulian/ext-extensions.git</pre></p>

<h3>git stat</h3>

<h3>git diff</h3>

<p><em>git stat</em> tell you the current status &#8211; what files have changed. And <em>git diff</em> will show you a line by line diff of every file that has changed. Pipe it&#8217;s output to your favorite editor, or to a pager like <em>less</em>.</p>

<h3>git commit</h3>

<p><pre>$ git commit -m "added this new feature" ext-extensions.js</pre>
You have just added your change into your copy of the repository. Pass a meaningful message. You need to specify the file(s) to commit, or -a to commit everything that is modified.</p>

<h3>git push</h3>

<p>Use <em>git push</em> to send all your commits to the origin server. If you don&#8217;t want to send them all, then commit some on a different branch from &#8216;master&#8217;. (this is not hard, but a bit more advanced. Look up <em>git branch</em> and <em>git checkout</em>).
<pre>$ git push origin master</pre>
That&#8217;s the remote repo name (origin) and the branch name (master). These are defaults; you can push/pull to/from more than one remote repo.</p>

<h3>git pull</h3>

<p>Use <em>git pull</em> to integrate changes from another git repo into yours. Similar format as <em>git push</em>.
<pre>$ git pull origin master</pre></p>

<h3>Armed and dangerous</h3>

<p>Armed with the above commands, and a git expert nearby, I guarantee you&#8217;ll be able to survive the day only bothering them once or twice. Here are more tips to keep you going:</p>

<h3>git add</h3>

<p>You can batch your commits to git. Use <em>git add</em> to queue up a bunch of files (or directories) and then commit them all at once using <em>git commit</em>. Very helpful. With this usage, do not specify files on the command line. If you use <em>git add</em>, you also need to use&#8230;</p>

<h3>git diff &#8211;cached</h3>

<p>the <em>&#8211;cached</em> param to diff tells it to diff against the version pending commit, not the version on disk. This can get you in trouble, so before you commit &#8216;added&#8217; files, make sure you have not changed them since the add (of course, this is a feature as well, as you can keep modifying a file but then only commit the original changes. It can get confusing, so just don&#8217;t do it.).</p>

<h3>git checkout &#8212; path/to/file.txt</h3>

<p>You&#8217;ve made some changes to a file, maybe lot&#8217;s of changes, and it&#8217;s all crap. You just want to pull the latest version from the repo and forget you even edited it. This works alot like <em>svn revert</em>.</p>

<p>These are the commands I use every day. There are some more: <em>git log, git merge, git mv, git rm, git reset, git show, git blame</em>&#8230;but I&#8217;ll save these for part 2. The basics are enough to allow a user without too much scm experience to survive changing code and committing files. There&#8217;s plenty of info available on the web for any git situation you may find yourself in, don&#8217;t be afraid, jump on in!</p>

<p><span> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanjulian.com/2009/08/basic-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>svn revert file.rb == git checkout &#8212; file.rb</title>
		<link>http://jonathanjulian.com/2009/03/svn-revert-filerb-git-checkout-filerb/</link>
		<comments>http://jonathanjulian.com/2009/03/svn-revert-filerb-git-checkout-filerb/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 20:52:02 +0000</pubDate>
		<dc:creator>jonathan</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://jonathanjulian.com/?p=37</guid>
		<description><![CDATA[You&#8217;ve changed a file, but don&#8217;t want to commit it. Ever. I do this all the time, maybe disabling a filter so I can hit a page with curl, maybe hard-coding a specific user id to test something. In subversion, you would &#8220;revert&#8221; that file. svn revert file.rb In git, you don&#8217;t add that file [...]]]></description>
			<content:encoded><![CDATA[<p>You&#8217;ve changed a file, but don&#8217;t want to commit it. Ever. I do this all the time, maybe disabling a filter so I can hit a page with curl, maybe hard-coding a specific user id to test something. In subversion, you would &#8220;revert&#8221; that file.</p>

<pre><code>svn revert file.rb
</code></pre>

<p>In git, you don&#8217;t add that file to your staging area for commit. To make your changes go away forever, you checkout a new copy of that file from HEAD.</p>

<pre><code>git checkout -- file.rb
</code></pre>

<p>If you omit the &#8211;, it will still work, as long as you don&#8217;t have a branch named the same as your file. Thanks to <a href="http://norbauer.com/consulting/team">Jonathan Dance</a> at <a href="http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file">norbauer.com</a> &#8211; one of the few blog entries I found describing this technique.</p>

<p><strong><em>2009-04-28 UPDATE</em></strong> &#8211; err has a great <a href="http://cheat.errtheblog.com/s/git/">git cheatsheet</a> that includes this trick under Fixing Mistakes.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanjulian.com/2009/03/svn-revert-filerb-git-checkout-filerb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

