Я не могу ответить на вопрос, как получить статус, если не было сделано никаких коммитов, но я могу попытаться объяснить, почему он взорвался.
Класс Git :: Status работает, выполняяgit diff из HEAD против хранилища.В Git «HEAD» ссылается на текущую ветку и рабочее дерево.
Поскольку ветвь в основном является указателем на конкретный коммит (указатель ветки перемещается по истории, когда производятся новые коммиты), в действительности веток не существует(даже не мастер), пока не появится коммит, на который можно указать.Если веток нет, HEAD тоже не существует.Поэтому ссылка на него в git diff выдает ошибку.
Это отличное визуальное руководство по пониманию HEAD / branch / commitits: http://marklodato.github.com/visual-git-guide/
Итак, в заключение, кажется, что попыткаделать что-либо в git-репо без коммитов бессмысленно.Конечно, чтобы сделать коммит, вам нужен файл.Поэтому вам, вероятно, необходимо:
#gem install git
require 'rubygems'
require 'git'
#Create an empty file
FileUtils.touch 'README'
g = Git.init
g.add('README')
g.commit('First Commit')
g.status
Если вы хотите проверить, был ли файл добавлен в репо:
#gem install git
require 'rubygems'
require 'git'
#Create an empty file
FileUtils.touch 'README'
g = Git.init
g.ls_files.has_key?("README") #False
g.add("README")
g.commit("First Commit")
g.ls_files.has_key?("README") #True