リモート リポジトリでブランチのコミット履歴にアクセスしようとしています。ドキュメントを確認しましたが、ローカルの git クライアントを使用してリモート リポジトリのコミット履歴にアクセスする方法に関する重要な情報が見つかりませんでした。
10 に答える
git log remotename/branchname
そのリポジトリ内の特定のリモートブランチのログが表示されますが、リポジトリからリモートリポジトリの個人的な「コピー」に「フェッチ」したログのみが表示されます。
リポジトリのクローンは、を実行するだけでリモートブランチの状態を更新することに注意してくださいgit fetch
。サーバーに直接接続してログを確認することはできません。サーバーの状態をダウンロードしてgit fetch
、リモートブランチのログをローカルで確認するだけです。
おそらく、別の便利なコマンドは次のようになります。
git log HEAD..remote/branch
これにより、リモートブランチにはあるが、現在のブランチにはないコミットが表示されます(HEAD
)。
注意。以下の「origin」は、複製されたリポジトリのアップストリームを表すために使用されます。「origin」は、リモート リポジトリのわかりやすい名前に置き換えてください。「リモート参照」は、クローン コマンドで使用されるのと同じ形式を使用できます。
git remote add origin <remote reference>
git fetch
git log origin/master
--bare
これを行う簡単な方法は、キーワードを使用してクローンを作成し、ログを確認することです。
git clone --bare git@giturl tmpdir
cd tmpdir
git log branch
フィルタリングがいつ追加されたのかはわかりませんが、履歴/参照ログのみを取得する場合は、オブジェクト BLOB を除外する方法です。
git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log
ログはローカル リポジトリでのみ表示できますが、セットアップしたすべてのリモートのフェッチされたブランチを含めることができます。
したがって、レポをクローンすると...
git clone git@gitserver:folder/repo.git
これはデフォルトでorigin/master
.
origin
let's add以外に、このリポジトリにリモートを追加できproduction
ます。ローカル クローン フォルダ内から:
git remote add production git@production-server:folder/repo.git
のログを見たい場合は、次のproduction
ことを行う必要があります。
git fetch --all
これは、すべてのリモートからフェッチします (デフォルトのフェッチなしで--all
は、からだけフェッチされますorigin
) 。
取得後、production
リモートでログを確認できます。ブランチも指定する必要があります。
git log production/master
すべてのオプションは、ローカル ブランチにログオンする場合と同様に機能します。
git
のような集中型の scm ではないsvn
ため、次の 2 つのオプションがあります。
- ターゲット プラットフォームの Web インターフェイスを使用する (fe GitHub REST APIまたはGitLab REST API )
- リポジトリをダウンロードしてログをローカルに表示する
多くの異なるプラットフォーム (GitHub、GitLab、BitBucket、SourceForge、Launchpad、Gogs など) に実装するのは煩わしいかもしれませんが、データの取得は非常に遅く (約数秒)、完璧なソリューションはありません。
一時ディレクトリにフェッチする例:
git clone https://github.com/rust-lang/rust.git -b master --depth 3 --bare --filter=blob:none -q .
git log -n 3 --no-decorate --format=oneline
または:
git init --bare -q
git remote add -t master origin https://github.com/rust-lang/rust.git
git fetch --depth 3 --filter=blob:none -q
git log -n 3 --no-decorate --format=oneline origin/master
どちらも、1 つのブランチの 3 つのコミットをファイル コンテンツのない最小限のローカル コピーに制限し、コンソール出力を防止することで、パフォーマンスが最適化されています。ただし、フェッチ中に接続を開き、デルタを計算するには時間がかかります。
GitHub の例:
GET https://api.github.com/repos/rust-lang/rust/commits?sha=master&per_page=3
GitLab の例:
GET https://gitlab.com/api/v4/projects/inkscape%2Finkscape/repository/commits?ref_name=master&per_page=3
どちらも非常に高速ですが、インターフェイスが異なります (すべてのプラットフォームと同様)。
免責事項: Rust と Inkscape が選択されたのは、そのサイズと滞在の安全性のためであり、広告はありません