GitでChromiumのような巨大リポジトリ―を使用していると、ストレージ容量や通信量が多いので、手元は必要最小限の履歴にしておいて、必要なコミット履歴をリモートリポジトリ―から参照したいことがあります。
それで、Gitでリモートリポジトリ―のコミット履歴を参照する方法がないか、度々調べることになり、同じ結論に辿り着いて無駄なのでここに記録しておきます。
!it Gitが複雑で難しい。Gitはリモートリポジトリー関係の処理がほぼできません。 Chromiumのような巨大プロジェクトだと、ストレージも通信も大きいので、手元は–depth 1にしておいて、特定ファイルの履歴だけ追跡したいとかあるのです。 ですが、そういうのは無理です。基本はローカルに全部fetchする前提です。これがいまいちです。 全部の履歴を取得すると、それだけで300 GBとか使いますのでね…貸与されてるマシンのストレージが500 GBなのできついのです。 ぐぬ管 (GNU social JP管理人)|gnusocialjp@gnusocial.jpHow to fetch only specific files on gitI want to save bandwidth and make my fetch/pull run faster, so i want to only update specific files and leave the rest unchanged, i don't care about their statu...Commit history on remote repositoryI am trying to access a branch's commit history on a remote repository. I had a look at the doc but could not find any substantial information on how to access ...
結論からいうと、git log相当のリモートリポジトリ―のコミット履歴一覧の参照は不能です。
「git – Commit history on remote repository – Stack Overflow」にある通り、Gitはローカルリポジトリ―を前提としており、一度git fetchでリモートのデータのローカルへの取得が必要です。
リモートで参照できるのは、 git ls-remoteでのブランチ、タグ、コミットのみです。ローカルに取得せずに、リモートのコミット履歴だけ参照したり、検索することは不能です。
リモートでコミット履歴を参照したければ、そういう機能を搭載したGitの関連サービスを使うしかないです。例えば、Chromiumだと「Chromium Code Search」があります。「自宅でできる Chromium Code Search – Qiita」で説明されている「google/zoekt: Fast trigram based code search」のようなコード検索のためのツールがあるので、これを利用します。
何らかの方法で必要なコミットSHA1の一覧、ブランチ、タグの情報を取得して、git fetchをピンポイントで行うことで、必要なコミット履歴だけ取得することはできます。
何かあるたびに、Gitでリモートリポジトリ―のコミット履歴を参照できなかったっけ?と思うので、ここに記録して忘れないようにします。
詳細プロフィール。SNS: X Twitter/GS=gnusocialjp@gnusocial.jp/WP=gnusocialjp@web.gnusocial.jp。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。
Comments