ローカルGitリポジトリをバックアップする方法? のようにgitリポジトリのバックアップを作成しました
git bundle create /tmp/foo-all --all
Git-svnによって作成されたリモート参照を含め、すべての参照がそこにあることがわかります。このバンドルをローカルリポジトリに再度復元する方法がわかりません。もう一回やったことは確かだ。私はgit-cloneを試してみましたが、リモートリポジトリとしてバックアップバンドルを含むリポジトリを提供します。
私も試しました
git init
git bundle unbundle /tmp/foo --all
しかし、これはすべての参照をリストするだけです...
バンドルを確認すると、次のようになります。
$ git bundle verify $somewhere/foo.bundle
The bundle contains 12 refs
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/master
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/git-svn
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HEAD
The bundle requires these 0 ref
$somewhere/foo.bundle is okay
簡潔な答え:
$ git bundle verify $somewhere/foo.bundle
$ git clone $somewhere/foo.bundle
Cloning into 'foo'...
Receiving objects: 100% (10133/10133), 82.03 MiB | 74.25 MiB/s, done.
Resolving deltas: 100% (5436/5436), done.
$ cd foo
$ git status
...
レイジーバジャーはこれを言ったが、それは最後の段落にあります。 :)
新しいバージョンのgitで十分です。
git clone bundle.file
コマンド全体:
mkdir ~/git
cd ~/git
git clone /path/to/bundle.file
Yourのgit bareレポジトリコンテンツを完全に復元します(通常のソースと同じようにコンパイルされます)。他のファイルは必要ありません。バンドルファイルで十分です。
次のように、アンバンドルする前に必ずバンドルファイルを確認することをお勧めします。
git bundle verify /path/to/bundle.file
バンドルにはファイルは含まれていませんが、deltas、順番にbaseが必要ですファイルの内容を再作成します。最初にクローンを作成し、後でバンドルを解除する必要があります。バンドルが0の参照を必要とする場合にのみ、クローンの代わりに初期化が許可されます
無視しないでくださいgit bundle verify
分離する前
バンドルファイルが有効であり、現在のリポジトリにクリーンに適用されることを確認するために使用されます。これには、バンドル形式自体のチェック、および前提条件のコミットが存在し、現在のリポジトリに完全にリンクされていることのチェックが含まれます。 git bundleは、欠落しているコミットがあればそのリストを出力し、ゼロ以外のステータスで終了します。
リポジトリを作成している場合は、空のリポジトリを作成してバンドルからオブジェクトをプルまたはフェッチする代わりに、リモートリポジトリであるかのようにバンドルからクローンを作成できます。