2012-02-18 7 views
0

私はgit-unpack-objectsを.packファイルに作成しました。私が得たのは00からffまでのサブディレクトリがたくさんあり、SHA1ハッシュのような名前のタイルがたくさん含まれていましたが、その内容を表示しようとすると、私はいくつかの迷惑をかけることになります。今私はそれらのハッシュファイルから実際のソースファイルを取得する必要がありますか?git-unpack-objectsの後に実際のファイルを取得するにはどうすればよいですか?

+0

あなたは 'gitのアンパック-objects'を行う必要がありますか?なぜ 'git cat-file'だけではないのですか? – Borealid

+0

.packファイルを使って直接作業しているのはなぜですか?完全なgitリポジトリで作業する場合は、標準のgitコマンド( "git checkout"、 "git show"など)を使用してファイルに簡単にアクセスできます。パックされたファイルはパックファイルを手作業で扱わなくてもgitによって抽出されます。 –

+0

帯域幅の制限のため、私はgit-cloneを実行することができず、gitクローンは継続的に失敗し続けました。したがって、.packファイルと.idxファイルを取り出し、700MBファイルとして圧縮し、.packファイルと.idxファイルを取得しました。今はそれらの.packと.idxファイルからgitソースツリーを再作成したいと思っています。 – user917279

答えて

2

.packファイルを新しくgit initのリポジトリの.git/objects/pack/ディレクトリに配置すると、git checkout -b somebranch ANYSHA1になるはずです。例えば

# find a commit: 
[email protected]:~/git% git rev-parse HEAD 
6f5e880c68099b185e60b2492c75e506e16d8292 
[email protected]:~/git% cd .. 

# init: 
[email protected]:~% git init bar 
Initialized empty Git repository in /home/faux/bar/.git/ 

# add packs: 
[email protected]:~% cp git/.git/objects/pack/* bar/.git/objects/pack 
[email protected]:~% cd bar 

# checkout: 
[email protected]:~/bar% git checkout -b somebranch 6f5e880c68099b185e60b2492c75e506e16d8292 
Switched to a new branch 'somebranch' 

# done! 
[email protected]:~/bar% ls 
abspath.c 
contrib 
... 
+0

詳細な手順をありがとうございました。私は最後の1週間苦労していた。しかし今、私はファイルを入手することができます。リモートリポジトリにフェッチ/プッシュ/プルできるようになりますか?リモートリポジトリに接続するために.gitディレクトリに変更を加える必要がありますか?どのようにリモートリポジトリで利用できるブランチに切り替えることができますか?ファイルをコピーする必要はありますか?もう一度ありがとうございます。 – user917279

+0

実際に私はgit initとgit reset -hardを試しましたが、git statusの後にファイルが削除されたと報告されました。しかし、あなたのアプローチはきれいに見えます。 – user917279

+0

これで、 'git remote -f origin url:// to/remote/repository'にできるはずです。そうすれば' git remote update'は少しでもうれしくダウンロードされます(できれば!)、あなたは正常。 – FauxFaux

関連する問題