10

ハイ!

最初にクローンを作成せずに、git バンドルに保存されているすべてのコミットのリストを取得する方法はありますか?

ヘッドを取得するのは簡単ですが、完全なログを取得する方法が見つかりませんでした。

4

2 に答える 2

7

特別なソフトウェアを書かないと、バンドルに含まれるパックをウォークスルーすることはできません。バンドルが負の参照で作成された場合、バンドル内のオブジェクトのみを使用して解決できないデルタが含まれる可能性があります (バンドルに埋め込まれたパックは薄い可能性があります)。

バンドルを(少なくとも裸のクローンに)クローンすると、参照が分割され、パックにインデックスが付けられ、標準の git コマンドが使用できる形式が生成されるため、(統合作業の点で)それを読み取る最も簡単な方法です。

バンドルをマージする前にバンドルを「プレビュー」するためにできることの 1 つは、単純にそれをリモート リポジトリとして追加することです。その後、そこから取得して追跡参照にアクセスできます。次のようなものです:

git remote add bundle /path/to/bundle
git remote update bundle

gitk master...bundle/masterこれで、ローカル リポジトリと比較してバンドル内のブランチを比較し、最後git pull bundle masterにマージすることができます。

完了したら、単にクリーンアップしますgit remote rm bundle

于 2013-01-22T15:32:30.237 に答える
1

araqnid回答で提案されているように、バンドルから取得することが最も簡単な解決策です。

それ以外 (つまり、バンドルからのクローン作成/フェッチなし) には、git bundleフォーマットのデコードが含まれます。
バンドル形式の技術的な詳細が文書化されているため、Git 2.25.1 (2020 年 2 月) でこれを行う方が少し簡単です。

コミット 7378ec9 (2020 年 2 月 7 日)鈴木雅也 ( draftcode)を参照してください。
( 2020 年 2 月 12 日、コミット e99c325Junio C Hamanogitster
によってマージされました)ディスカッションを参照してください

doc: Git バンドル形式について説明します

署名者:鈴木雅也

バンドル形式は文書化されていませんでした。ABNFでフォーマットを記述し、各部の意味を説明します。

( ABNF: Augmented Backus–Naur formBackus–Naur form (BNF) に基づくメタ言語ですが、独自の構文と派生規則で構成されています)

詳細については、次を参照Documentation/technical/bundle-format.txtしてください。

bundle    = signature *prerequisite *reference LF pack
signature = "# v2 git bundle" LF

prerequisite = "-" obj-id SP comment LF
comment      = *CHAR
reference    = obj-id SP refname LF

pack         = ... ; packfile
于 2020-02-13T17:38:08.897 に答える