ハイ!
最初にクローンを作成せずに、git バンドルに保存されているすべてのコミットのリストを取得する方法はありますか?
ヘッドを取得するのは簡単ですが、完全なログを取得する方法が見つかりませんでした。
ハイ!
最初にクローンを作成せずに、git バンドルに保存されているすべてのコミットのリストを取得する方法はありますか?
ヘッドを取得するのは簡単ですが、完全なログを取得する方法が見つかりませんでした。
特別なソフトウェアを書かないと、バンドルに含まれるパックをウォークスルーすることはできません。バンドルが負の参照で作成された場合、バンドル内のオブジェクトのみを使用して解決できないデルタが含まれる可能性があります (バンドルに埋め込まれたパックは薄い可能性があります)。
バンドルを(少なくとも裸のクローンに)クローンすると、参照が分割され、パックにインデックスが付けられ、標準の 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
araqnidの回答で提案されているように、バンドルから取得することが最も簡単な解決策です。
それ以外 (つまり、バンドルからのクローン作成/フェッチなし) には、git bundle
フォーマットのデコードが含まれます。
バンドル形式の技術的な詳細が文書化されているため、Git 2.25.1 (2020 年 2 月) でこれを行う方が少し簡単です。
コミット 7378ec9 (2020 年 2 月 7 日)鈴木雅也 ( draftcode
)を参照してください。
( 2020 年 2 月 12 日、コミット e99c325でJunio C Hamanogitster
によってマージされました)ディスカッションを参照してください。
doc
: Git バンドル形式について説明します署名者:鈴木雅也
バンドル形式は文書化されていませんでした。ABNFでフォーマットを記述し、各部の意味を説明します。
( ABNF: Augmented Backus–Naur form、Backus–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