<?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>databasically // Kansas City Small Business IT &#38;&#38; Ruby on Rails Programming &#187; Version Control</title>
	<atom:link href="http://databasically.com/category/blog/programming/version-control/feed/" rel="self" type="application/rss+xml" />
	<link>http://databasically.com</link>
	<description>Kansas City Small Business IT</description>
	<lastBuildDate>Fri, 03 Feb 2012 05:24:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>git: merge a single commit</title>
		<link>http://databasically.com/2011/06/03/git-merge-a-single-commit/</link>
		<comments>http://databasically.com/2011/06/03/git-merge-a-single-commit/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 10:01:43 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://databasically.com/?p=563</guid>
		<description><![CDATA[Sometimes, you have one commit you want to get into production, but it&#8217;s located after other changes that you&#8217;re not ready to merge in yet. How can you get that single git commit into a different branch? First, you have to know the SHA of the commit you want: git checkout branch-with-commit-on-it git log Highlight [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, you have one commit you want to get into production, but it&#8217;s located after other changes that you&#8217;re not ready to merge in yet.  How can you get that single git commit into a different branch?</p>
<p>First, you have to know the SHA of the commit you want:</p>
<pre class="ruby">  git checkout branch-with-commit-on-it
  git log</pre>
<p>Highlight and copy the SHA of the commit you want to grab.</p>
<pre class="ruby">  git checkout master

  # -n =&gt; don't commit, just merge changes so we can review and commit ourself
  git cherry-pick -n [The commit’s SHA-1 Hash]

  # review
  git diff –cached

  # commit if all is well
  git commit -a -m “merge SHA1 ..."</pre>
<p>If you&#8217;re feeling confident, you can skip the -n and merge the single commit in directly and save a minute.</p>
<p>Note, this isn&#8217;t a merge, so it&#8217;s possible you could have some conflicts down the road when you merge the original commit into this branch.  You&#8217;re creating a brand new commit object.</p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2011/06/03/git-merge-a-single-commit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git: Commit Early, Commit Often</title>
		<link>http://databasically.com/2011/03/14/git-commit-early-commit-often/</link>
		<comments>http://databasically.com/2011/03/14/git-commit-early-commit-often/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 16:28:36 +0000</pubDate>
		<dc:creator>Jaime Bellmyer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://databasically.com/?p=486</guid>
		<description><![CDATA[Don&#8217;t Be Afraid of Commitment The phrase &#8220;save early, save often&#8221; was a mantra of early computer science. It&#8217;s good advice, but it&#8217;s only half the story. If you&#8217;ve ever sat down for a fast and furious coding session only to realize hours later that you removed something important, you know the frustration of not [...]]]></description>
			<content:encoded><![CDATA[<h2>Don&#8217;t Be Afraid of Commitment</h2>
<p>The phrase &#8220;save early, save often&#8221; was a mantra of early computer science. It&#8217;s good advice, but it&#8217;s only half the story. If you&#8217;ve ever sat down for a fast and furious coding session only to realize hours later that you removed something important, you know the frustration of not being able to get it back. It can mean hours lost.</p>
<p>Getting in the habit of regular commits has a number of benefits. First, you can go back to any previously committed version if your coding goes off-track. You can reference earlier parts of your work even if you don&#8217;t need to revert to them. Best of all, it an actually have a positive impact on your code itself.</p>
<h2>Better Code through Committing</h2>
<p>Just as Test-Driven Development influences us to write a larger number of shorter/simpler methods, frequent committing pushes us to think of atomic changes. Atomic in this context means the smallest possible self-sufficient change. Consider this snippet from <em>git log</em>:</p>
<pre name='code' class="ruby">
commit b0e77532b5a8cf236d95f1b3324aabc194568c60
Author: Wally
Date:   Tue Feb 29 23:58:05 2011 -0600

added comments to blog posts
</pre>
<p>This is an example of a commit done at the end of a feature. Lots of code has probably gone into this, and if you wanted to see any of the steps along the way, you&#8217;re out of luck. It&#8217;s also not very easy to see what was changed in the app.</p>
<h2>An Example of Frequent Commits</h2>
<p>Now look at this version:</p>
<pre name='code' class="ruby">
commit e8bba8ad1a4b5c1353c328b505bfa2a9f4816d07
Author: Alice
Date:   Tue Feb 29 14:58:05 2011 -0600

added edit/delete links to each comment if user has permissions

commit 8bba8ad1a4b5c1353c328b505bfa2a9f4816d07e
Author: Alice
Date:   Tue Feb 29 13:58:05 2011 -0600

allowed admins to edit/update/delete any comments

commit bba8ad1a4b5c1353c328b505bfa2a9f4816d07e8
Author: Alice
Date:   Tue Feb 29 11:58:05 2011 -0600

restricted edit/update/delete actions to user's own comments

commit ba8ad1a4b5c1353c328b505bfa2a9f4816d07e8b
Author: Alice
Date:   Tue Feb 29 11:36:20 2011 -0600

created controller/views

commit a8ad1a4b5c1353c328b505bfa2a9f4816d07e8bb
Author: Alice
Date:   Tue Feb 29 10:03:31 2011 -0600

made comments nestable in the model

commit 8ad1a4b5c1353c328b505bfa2a9f4816d07e8bba
Author: Alice
Date:   Tue Feb 29 9:39:24 2011 -0600

defined activerecord associations among users, posts, and comments

commit ad1a4b5c1353c328b505bfa2a9f4816d07e8bba8
Author: Alice
Date:   Tue Feb 29 08:38:01 2011 -0600

added base comment model and migrations
</pre>
<p>You can clearly see the evolution of this feature, and it makes sense. Not only can you step back (if user permissions were implemented incorrectly, for instance) but Alice was &#8220;forced&#8221; to think about each logical step of her development process, instead of jumping in head first. It&#8217;s engineering 101 &#8211; break a problem in its atomic elements, and attack each of those.</p>
<p>Incidentally, this can also help explain to coworkers, bosses, and clients why a seemingly simple task took longer than expected. As you squirm and attempt to justify what you know is an elegant solution, you might not remember all the steps that got you there.</p>
<p>Git remembers.</p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2011/03/14/git-commit-early-commit-often/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Git Branching After the Fact</title>
		<link>http://databasically.com/2011/02/14/git-branching-after-the-fact/</link>
		<comments>http://databasically.com/2011/02/14/git-branching-after-the-fact/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 21:26:37 +0000</pubDate>
		<dc:creator>Samuel Mullen</dc:creator>
				<category><![CDATA[Version Control]]></category>
		<category><![CDATA[branching]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[workflows]]></category>

		<guid isPermaLink="false">http://databasically.com/?p=446</guid>
		<description><![CDATA[We have a pretty simple Git work flow here at Databasically: Just work in master. There are a couple reasons for this: we&#8217;re not a large team, and we have a very rapid (i.e. daily) release cycle. I had been used to creating branches for every new feature, so when I found out we primarily [...]]]></description>
			<content:encoded><![CDATA[<p>We have a pretty simple <a href="http://git-scm.com/">Git</a> work flow here at <a href="http://databasically.com">Databasically</a>: Just work in master. There are a couple reasons for this: we&#8217;re not a large team, and we have a very rapid (i.e. daily) release cycle. I had been used to creating branches for every new feature, so when I found out we primarily work on the &#8220;master&#8221; branch, I was a bit shocked.</p>
<p>I know what you&#8217;re thinking, &#8220;But what if you go down a path and realize you need to branch in order to put in a &#8216;hotfix&#8217;, or you find out the story is more involved than initially  thought?&#8221;: you just create a branch after the fact. Here&#8217;s how to do it in just a few easy steps:</p>
<h2>Step 1: Know where you are and where you want to go</h2>
<p>The first thing you need to know is where you are and where you want to go.</p>
<p><a href="http://databasically.com/wp-content/uploads/2011/02/git_head1.png"><img class="alignnone size-full wp-image-450" title="git_head" src="http://databasically.com/wp-content/uploads/2011/02/git_head1.png" alt="" width="589" height="109" /></a></p>
<p>In the case (completely contrived example) above, I need to add a fix to what is in production (SHA: fa87cd9). So I want to roll everything back and start working from that hash point.</p>
<h2>Step 2: Create a new branch</h2>
<p>Now that we know where we want to go, we need to first create a new branch. We create a branch in order to force Git to remember our current line of work. In some ways, you can think of Git branches as inodes in Unix/Linux: as long as a file descriptor [branch] is pointing to an inode, it can&#8217;t be fully deleted [reset]. To do this, we&#8217;re just going to issue the &#8220;git branch &lt;branch name&gt;&#8221; command.</p>
<p>I should note that before you do this, make sure you&#8217;re clean. &#8220;Add&#8221; and &#8220;commit&#8221;, or &#8220;stash&#8221;, what you&#8217;re currently working on.</p>
<p><a href="http://databasically.com/wp-content/uploads/2011/02/gitbranch1.png"><img class="alignnone size-full wp-image-451" title="gitbranch" src="http://databasically.com/wp-content/uploads/2011/02/gitbranch1.png" alt="" width="629" height="168" /></a></p>
<p>So here, I created the branch &#8220;hotfix&#8221; and you can see that HEAD, master, and hotfix are all pointing to the same SHA. You can make sure your branch exists, by issuing the &#8220;git branch&#8221; command. Now, we can make our changes in master and push to production.</p>
<h2>Step 3: There is No &#8230; step 3</h2>
<p>This means you, Bruce.</p>
<h2>Step 4: Reset Master</h2>
<p>Now that we have a branch (created in step 2) we&#8217;ll reset HEAD to our chosen hash. We do that using git&#8217;s &#8220;reset&#8221; command:</p>
<blockquote>
<pre>git reset --hard fa87cd9</pre>
</blockquote>
<p>The log will look something like this:</p>
<p><a href="http://databasically.com/wp-content/uploads/2011/02/git_resetlog.png"><img class="alignnone size-full wp-image-452" title="git_resetlog" src="http://databasically.com/wp-content/uploads/2011/02/git_resetlog.png" alt="" width="526" height="94" /></a></p>
<p>After making our change and committing, our log looks like this:</p>
<p><a href="http://databasically.com/wp-content/uploads/2011/02/git_afterreset.png"><img class="alignnone size-full wp-image-453" title="git_afterreset" src="http://databasically.com/wp-content/uploads/2011/02/git_afterreset.png" alt="" width="550" height="103" /></a></p>
<p>Now we can push that into production and get back to what we were working on.</p>
<h2>Step 5: Rebase and Merge</h2>
<h3>Step 5a: Rebase Master</h3>
<p>In order to get back to what we were working on, we need to first rebase the changes we made in master into production. To do that, first checkout hotfix and run git rebase master</p>
<blockquote>
<pre>git checkout hotfix
git rebase master
</pre>
</blockquote>
<p>By rebasing master, we replay those changes made in master onto our &#8220;hotfix&#8221; branch. Our hotfix branch should now look like this:</p>
<p><a href="http://databasically.com/wp-content/uploads/2011/02/git_rebase.png"><img class="alignnone size-full wp-image-454" title="git_rebase" src="http://databasically.com/wp-content/uploads/2011/02/git_rebase.png" alt="" width="590" height="129" /></a></p>
<p>Notice where HEAD and hotfix are, and notice also where master is. It is now safe to merge everything back to master &#8211; and without leaving those unsightly branch paths.</p>
<h3>Step 5b: Merge</h3>
<p>First things first: check out master. Next: merge hotfix</p>
<blockquote>
<pre>git checkout master
git merge hotfix</pre>
</blockquote>
<p>You output will look something like this:</p>
<p><a href="http://databasically.com/wp-content/uploads/2011/02/git_hotfix.png"><img class="alignnone size-full wp-image-455" title="git_hotfix" src="http://databasically.com/wp-content/uploads/2011/02/git_hotfix.png" alt="" width="470" height="149" /></a></p>
<p>And your log will look like this:</p>
<p><a href="http://databasically.com/wp-content/uploads/2011/02/git_final.png"><img class="alignnone size-full wp-image-456" title="git_final" src="http://databasically.com/wp-content/uploads/2011/02/git_final.png" alt="" width="635" height="120" /></a></p>
<p>And everything is caught up. At this point you can delete the hotfix branch:</p>
<blockquote>
<pre>git branch -d hotfix
</pre>
</blockquote>
<h2>Conclusion</h2>
<p>This model works well for us, but I&#8217;m sure as we grow we&#8217;ll likely have to adopt more involved models such as the <a href="http://nvie.com/posts/a-successful-git-branching-model/">&#8220;A successful Git branching model</a>&#8221; used by <a href="http://nvie.com">nvie.com</a>. As we grow and modify our processes, we&#8217;ll be sure to let you know what we find to work and what we find which doesn&#8217;t.</p>
<h3>Further Reading</h3>
<ul>
<li><a href="http://git-scm.com/">The Git SCM</a></li>
<li><a href="http://nvie.com/posts/a-successful-git-branching-model/">A Successful Git Branching Model</a></li>
<li><a href="http://progit.org/book/">Pro Git Book</a></li>
<li><a href="http://gitimmersion.com/">Git Immersion</a></li>
</ul>
<h3>Notes:</h3>
<p>In this post, I have been calling &#8220;git log&#8221; with my alias &#8220;git lol&#8221; here is the details of the alias:</p>
<blockquote>
<pre>log --graph --decorate --date=local --pretty=format:'%h %cd (%an) %s%d'</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2011/02/14/git-branching-after-the-fact/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>git: pull is not possible because you have unmerged files.</title>
		<link>http://databasically.com/2010/07/01/git-pull-is-not-possible-because-you-have-unmerged-files/</link>
		<comments>http://databasically.com/2010/07/01/git-pull-is-not-possible-because-you-have-unmerged-files/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 16:53:52 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://databasically.com/?p=337</guid>
		<description><![CDATA[I saw this error message the other day and I had no clue what it meant. I&#8217;d never seen that error before! For reference, I was trying to pull from a remote branch and got the error message: Pull is not possible because you have unmerged files. A google search revealed this commit (d38a30df7dd54c5c6883) to [...]]]></description>
			<content:encoded><![CDATA[<p>I saw this error message the other day and I had no clue what it meant.  I&#8217;d never seen that error before!</p>
<p>For reference, I was trying to pull from a remote branch and got the error message:</p>
<pre name="code" class="ruby">Pull is not possible because you have unmerged files.</pre>
<p>A google search revealed this commit (<a href="http://github.com/git/git/commit/d38a30df7dd54c5c6883af1de1a03ec7d523cee5">d38a30df7dd54c5c6883</a>) to the git source on January 12, 2010.  </p>
<p>The error messages have been updated to be much clearer. Before, you&#8217;d get &#8220;needs merge&#8221; or &#8220;error building trees&#8221; errors, which didn&#8217;t really mean much.</p>
<p>In this case, I was pulling in many commits and had a conflict partway through. I just needed to resolve the files, add/delete them, commit the result and then continue with the pull.</p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2010/07/01/git-pull-is-not-possible-because-you-have-unmerged-files/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;warning: updating the current branch&#8221; when pushing to a git repository</title>
		<link>http://databasically.com/2010/03/08/warning-updating-the-current-branch-when-pushing-to-a-git-repository/</link>
		<comments>http://databasically.com/2010/03/08/warning-updating-the-current-branch-when-pushing-to-a-git-repository/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 04:05:07 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://databasically.com/?p=256</guid>
		<description><![CDATA[I pushed some changes after updating git on my server to git 1.6+ and now I get this: $ git push origin master ... warning: updating the current branch warning: Updating the currently checked out branch may cause confusion, warning: as the index and work tree do not reflect changes that are in HEAD. warning: [...]]]></description>
			<content:encoded><![CDATA[<p>I pushed some changes after updating git on my server to git 1.6+ and now I get this:</p>
<pre name="code" class="css">$ git push origin master
...
warning: updating the current branch
warning: Updating the currently checked out branch may cause confusion,
warning: as the index and work tree do not reflect changes that are in HEAD.
warning: As a result, you may see the changes you just pushed into it
warning: reverted when you run 'git diff' over there, and you may want
warning: to run 'git reset --hard' before starting to work to recover.
warning:
warning: You can set 'receive.denyCurrentBranch' configuration variable to
warning: 'refuse' in the remote repository to forbid pushing into its
warning: current branch.
warning: To allow pushing into the current branch, you can set it to 'ignore';
warning: but this is not recommended unless you arranged to update its work
warning: tree to match what you pushed in some other way.
warning:
warning: To squelch this message, you can set it to 'warn'.
warning:
warning: Note that the default will change in a future version of git
warning: to refuse updating the current branch unless you have the
warning: configuration variable set to either 'ignore' or 'warn'.
</pre>
<p>Woah!  After some research, this is because I didn&#8217;t set up my remote folder as &#8220;bare&#8221;. A non-bare repository has a working copy attached to it, and this warning is telling you that said working copy exists and is currently checked out to the branch you&#8217;re trying to push to.</p>
<p>This is bad, because if you were pushing to a co-worker&#8217;s machine, then when they go to commit or run a diff, things will go awry.  In this case, I just didn&#8217;t set up the repository correctly (it was the first one I&#8217;d done!) so I wasn&#8217;t in danger of losing anything.</p>
<p>The fix is to use <code>--bare</code>:<br />
<code>git init --bare</code> or <code>git clone --bare</code></p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2010/03/08/warning-updating-the-current-branch-when-pushing-to-a-git-repository/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Capistrano deploy error &quot;fatal: unable to create &#039;.git/index.lock&#039;: File exists&quot;</title>
		<link>http://databasically.com/2009/10/21/capistrano-deploy-error-fatal-unable-to-create-gitindex-lock-file-exists/</link>
		<comments>http://databasically.com/2009/10/21/capistrano-deploy-error-fatal-unable-to-create-gitindex-lock-file-exists/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 15:54:35 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.databasically.com/?p=132</guid>
		<description><![CDATA[This isn&#8217;t specific to capistrano, necessarily, but I ran into it deploying. fatal: unable to create '.git/index.lock': File exists The fix: Got to your project&#8217;s shared/cached-copy/.git folder and delete index.lock . It shouldn&#8217;t ever get hung up like that, but it happened to me.]]></description>
			<content:encoded><![CDATA[<p>This isn&#8217;t specific to capistrano, necessarily, but I ran into it deploying.</p>
<p><code>fatal: unable to create '.git/index.lock': File exists</code><br />
<span id="more-132"></span><br />
The fix:<br />
Got to your project&#8217;s shared/cached-copy/.git folder and delete index.lock .  It shouldn&#8217;t ever get hung up like that, but it happened to me.</p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2009/10/21/capistrano-deploy-error-fatal-unable-to-create-gitindex-lock-file-exists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git: You asked me to pull without telling me which branch &#8230;</title>
		<link>http://databasically.com/2009/07/01/git-you-asked-me-to-pull-without-telling-me-which-branch/</link>
		<comments>http://databasically.com/2009/07/01/git-you-asked-me-to-pull-without-telling-me-which-branch/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 02:17:44 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Version Control]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.databasically.com/?p=129</guid>
		<description><![CDATA[Received this error when trying to pull from a remote origin: You asked me to pull without telling me which branch you want to merge with, and 'branch.master.merge' in your configuration file does not tell me either. To fix, I added this to .git/config:]]></description>
			<content:encoded><![CDATA[<p>Received this error when trying to pull from a remote origin:</p>
<pre>You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.</pre>
<p><span id="more-129"></span><br />
To fix, I added this to .git/config:<br />
<script src="http://gist.github.com/190290.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2009/07/01/git-you-asked-me-to-pull-without-telling-me-which-branch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>git: failed to push some refs</title>
		<link>http://databasically.com/2009/06/26/git-failed-to-push-some-refs/</link>
		<comments>http://databasically.com/2009/06/26/git-failed-to-push-some-refs/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 19:23:25 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.databasically.com/?p=126</guid>
		<description><![CDATA[I&#8217;m really digging git, but its error messages are less than helpful at times. git push origin master error: failed to push some refs to origin Most likely, there are changes in the remote repo that you need to pull first: git pull origin master Resolve any conflicts, then you can push to the remote [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really digging git, but its error messages are less than helpful at times.</p>
<pre class="ruby" name="code">git push origin master
error: failed to push some refs to origin</pre>
<p>Most likely, there are changes in the remote repo that you need to pull first:</p>
<pre class="ruby" name="code">git pull origin master</pre>
<p>Resolve any conflicts, then you can push to the remote git repo.</p>
<p>I&#8217;m not sure why &#8220;failed to push some refs&#8221; couldn&#8217;t include &#8220;(do you need to pull?)&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2009/06/26/git-failed-to-push-some-refs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizing git history</title>
		<link>http://databasically.com/2009/03/10/visualizing-git-history/</link>
		<comments>http://databasically.com/2009/03/10/visualizing-git-history/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 20:33:34 +0000</pubDate>
		<dc:creator>Wes</dc:creator>
				<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://www.databasically.com/?p=96</guid>
		<description><![CDATA[I&#8217;ve been using git for version control on a new project. Instead of needing a connection to the server (as CVS and SVN do), changes are stored locally. Every once in a while, I want to poke back the history. git ships with a graphical repository viewer, but I like gitx better. git makes branching [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://git-scm.com/">git</a> for version control on a new project.  Instead of needing a connection to the server (as CVS and SVN do), changes are stored locally.</p>
<p>Every once in a while, I want to poke back the history. git ships with a graphical repository viewer, but I like <a href="http://gitx.frim.nl/">gitx</a> better.</p>
<p>git makes branching off to try something super easy, which is quickly becoming one of my favorite features. I can create a branch quickly, try something out, switch away and come back later if I want.</p>
<p>Using gitx to view my repository history, I can quickly find where branches diverged and it&#8217;s just kinda neat to look at.</p>
]]></content:encoded>
			<wfw:commentRss>http://databasically.com/2009/03/10/visualizing-git-history/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

