2011-02-08 20 views
1

私はGritを使ってレポを作成し、何度かコミットしています。私がコミットするたびに、私のコミットは保存されますが、古いものは消えます。誰でも私が間違っていることを何か手がかりがありますか?GitコミットはGitリポジトリの最後のコミットをオーバーライドしているようですか?

まず、私はレポを作成してコミットします。私はコミットをログに記録した場合、私はコミットIDを取得し、すべてが

repo_name = 'repos/myrepo.git' 
repo = Repo.init_bare(repo_name) 
index = Index.new(repo) 
index.add('mytext.txt', "This is my first text") 
index.commit('Text commit') 

を作品それから私は

index = repo.index 
index.read_tree('master') 
index.add('mytext.txt', "This is my second text") 
index.commit('Text commit') 

を別のコミットん...と私はgitのログを行うときに、唯一の最後のコミットが現れます。次の行は1を返します。

repo.commits.count 

私は間違っていると思いますか? Gritで書き込みメソッドを使用する方法に関するチュートリアルは実際には見つかりません。したがって、どんなリンクも高く評価されます。ありがとう!

答えて

2

生地。答えは簡単でした。コミット番号2はコミット番号1を親として持つ必要があります。そして、それは、これらのコミットの歴史を形成し、それが動作します:

index.commit('Text commit', [repo.commits.first]) 

私はまだグリットライブラリ内の書き込み方法を説明するチュートリアルやガイドを探しています。 rubyforgeのドキュメントはあまり説明していません。

+1

Gitのマニュアル(http://www.kernel.org/pub/software/scm/git/docs/)、特に "配管"コマンドを見てください。それらのほとんどは、GritのAPIで多かれ少なかれ同じように使用されます。 などと同等です。 'Grit :: Index#commit'は' git-commit-tree'です(http://www.kernel.org/pub/software/scm/git/docs/v1.7.4/git-commit-tree.html)。 – Koraktor

関連する問題