 			@process = null
 			@emit('stop')
 			callback?(arguments...)
-			
+
 		spawn('pkill', ['-TERM', '-P', @process.pid], @options).on('exit', handler).on('error', handler)
 
 	_update: (callback) ->
-		shouldRestartApp = Boolean(@process)
 		tasks = [
 			# Stop the application if running
 			(callback) =>
-				if shouldRestartApp
+				if @process
 					@_stop(callback)
 				else
 					callback()
-			
-			# Pull new commits
+
+			# Fetch new commits
 			(callback) =>
-				spawn('git', ['pull', 'origin', 'master'], @options).on('exit', callback).on('error', callback)
+				spawn('git', ['fetch'], @options).on('exit', callback).on('error', callback)
+
+			# Reset our master branch to origin/master
+			(callback) =>
+				spawn('git', ['reset', '--hard', 'origin/master'], @options).on('exit', callback).on('error', callback)
 
 			# Save the new commit hash
 			(callback) =>

				stdio: 'inherit'

			@process = spawn('sudo', ['-u', @user, 'foreman', 'start'], options)
		@emit('start')
		callback?()


			callback?(arguments...)
		)

	_exitHandler: (code, signal) ->
		@process = null

	_start: (callback) ->
		if not @process
			options =
