2012-02-21 19 views
0

基本的には、現在の作業ファイルを変更せずに、古いバージョンのファイルをリポジトリに入れる必要があります。 私はさまざまな方法を考えた:ファイルをチェックアウト、ngitで古いバージョンのファイルの内容を取得する

  • 一時ブランチをし、事
  • コピーしたファイルを実行するには、私のことを行うと、それを

を返す。しかし、これらの方法は本当に遅いと複雑です。 ngitに比べて簡単なことはないのですか? NGitを使用して

+0

それはngitする必要もありませんjgitドキュメントを参照してください? 'git show :path/to/file> file.old-version'(あるいは、おそらくngitにgit-showアナログがありますか?) – Cascabel

+0

[git-cat-file](http://schacon.github.com/ git/git-cat-file.html)も選択肢です。 [git show answers here](http://stackoverflow.com/questions/610208/how-to-retrieve-a-single-file-from-specific-revision-in-git)完全に –

+0

ありがとう、私たちの製品はすでにngitを使用しており、すべてを変更するにはかなりの努力が必要です。さて、私はこの唯一の理由でコンソールを試してラップすることができますが、私はまだngitソリューションを望んでいます:) –

答えて

0

:メソッドの使用方法の詳細については、http://jgit.info/javadoc/

ObjectId commitId = git.GetRepository().Resolve(ref); 
RevWalk revWalk = new RevWalk(git.GetRepository()); 
RevTree revTree = loRevWalk.ParseTree(commitId); 
TreeWalk treeWalk = new TreeWalk(git.GetRepository()); 
treeWalk.AddTree(revTree); 

while (treeWalk.Next()) 
{ 
    //compare treeWalk.NameString yourself 
    byte[] bytes = treeWalk.ObjectReader.Open(treeWalk.GetObjectId(0)).GetCachedBytes() 
    ... 
} 
関連する問題