diff --git a/Library/Homebrew/update.rb b/Library/Homebrew/update.rb
index 09399fbde317e941fe56febcbf11d29e8213cd7f..f500fdd8e1a2b4bf300a8301f740a4f9a5287cbd 100644
--- a/Library/Homebrew/update.rb
+++ b/Library/Homebrew/update.rb
@@ -22,10 +22,11 @@
 #  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 class RefreshBrew
-  CHECKOUT_COMMAND = 'git checkout master'
-  UPDATE_COMMAND   = 'git pull origin master'
-  REVISION_COMMAND = 'git log -l -1 --pretty=format:%H'
-  GIT_UP_TO_DATE   = 'Already up-to-date.'
+  RESPOSITORY_URL  = 'git://github.com/mxcl/homebrew.git'
+  CHECKOUT_COMMAND = 'git checkout -q master'
+  UPDATE_COMMAND   = "git pull #{RESPOSITORY_URL} master"
+  REVISION_COMMAND = 'git log -l -1 --pretty=format:%H 2> /dev/null'
+  GIT_UP_TO_DATE   = 'Already up-to-date'
   
   formula_regexp   = 'Library/Formula/(.+?)\.rb'
   ADDED_FORMULA    = %r{^\s+create mode \d+ #{formula_regexp}$}
@@ -40,9 +41,16 @@ class RefreshBrew
   # Performs an update of the homebrew source. Returns +true+ if a newer
   # version was available, +false+ if already up-to-date.
   def update_from_masterbrew!
-    git_checkout_masterbrew!
-    output = git_pull!
-    
+    output = ''
+    in_prefix do
+      if File.directory? '.git'
+        safe_system CHECKOUT_COMMAND
+      else
+        safe_system "git init"
+      end
+      output = execute(UPDATE_COMMAND)
+    end
+
     output.split("\n").reverse.each do |line|
       case line
       when ADDED_FORMULA
@@ -63,6 +71,8 @@ class RefreshBrew
   
   def current_revision
     in_prefix { execute(REVISION_COMMAND).strip }
+  rescue
+    'TAIL'
   end
   
   private
@@ -80,12 +90,4 @@ class RefreshBrew
     ohai(cmd, out) if ARGV.verbose?
     out
   end
-  
-  def git_checkout_masterbrew!
-    in_prefix { execute CHECKOUT_COMMAND }
-  end
-  
-  def git_pull!
-    in_prefix { execute UPDATE_COMMAND }
-  end
 end
diff --git a/bin/brew b/bin/brew
index ed7a5124eda530bbe34b93321aed9455dc48df3f..3bb11b385c648a56c3808ead7c158d106f0f08be 100755
--- a/bin/brew
+++ b/bin/brew
@@ -132,7 +132,8 @@ begin
         exec_editor *paths
       end
 
-    when 'up', 'update'
+  when 'up', 'update'
+    if system "/usr/bin/which -s git"
       require 'update'
       updater = RefreshBrew.new
       old_revision = updater.current_revision
@@ -147,6 +148,9 @@ begin
           puts "No formulae were updated." unless updater.pending_formulae_changes?
         end
       end
+    else
+      abort "Please `brew install git' first."
+    end
 
     when 'ln', 'link'
       ARGV.kegs.each {|keg| puts "#{keg.link} links created for #{keg}"}