247

リモート リポジトリでブランチのコミット履歴にアクセスしようとしています。ドキュメントを確認しましたが、ローカルの git クライアントを使用してリモート リポジトリのコミット履歴にアクセスする方法に関する重要な情報が見つかりませんでした。

4

10 に答える 10

294
git log remotename/branchname

そのリポジトリ内の特定のリモートブランチのログが表示されますが、リポジトリからリモートリポジトリの個人的な「コピー」に「フェッチ」したログのみが表示されます。

リポジトリのクローンは、を実行するだけでリモートブランチの状態を更新することに注意してくださいgit fetch。サーバーに直接接続してログを確認することはできません。サーバーの状態をダウンロードしてgit fetch、リモートブランチのログをローカルで確認するだけです。

おそらく、別の便利なコマンドは次のようになります。

git log HEAD..remote/branch

これにより、リモートブランチにはあるが、現在のブランチにはないコミットが表示されます(HEAD)。

于 2012-12-19T01:18:10.033 に答える
77

注意。以下の「origin」は、複製されたリポジトリのアップストリームを表すために使用されます。「origin」は、リモート リポジトリのわかりやすい名前に置き換えてください。「リモート参照」は、クローン コマンドで使用されるのと同じ形式を使用できます。

git remote add origin <remote reference>
git fetch
git log origin/master
于 2012-12-18T21:56:32.710 に答える
17

--bareこれを行う簡単な方法は、キーワードを使用してクローンを作成し、ログを確認することです。

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch
于 2015-12-22T11:04:05.697 に答える
15

フィルタリングがいつ追加されたのかはわかりませんが、履歴/参照ログのみを取得する場合は、オブジェクト BLOB を除外する方法です。

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log
于 2020-03-31T14:18:37.217 に答える
13

ログはローカル リポジトリでのみ表示できますが、セットアップしたすべてのリモートのフェッチされたブランチを含めることができます。

したがって、レポをクローンすると...

git clone git@gitserver:folder/repo.git

これはデフォルトでorigin/master.

originlet's add以外に、このリポジトリにリモートを追加できproductionます。ローカル クローン フォルダ内から:

git remote add production git@production-server:folder/repo.git

のログを見たい場合は、次のproductionことを行う必要があります。

git fetch --all 

これは、すべてのリモートからフェッチします (デフォルトのフェッチなしで--allは、からだけフェッチされますorigin) 。

取得後、productionリモートでログを確認できます。ブランチも指定する必要があります。

git log production/master

すべてのオプションは、ローカル ブランチにログオンする場合と同様に機能します。

于 2015-07-25T09:57:37.770 に答える
2

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 が選択されたのは、そのサイズと滞在の安全性のためであり、広告はありません

于 2020-10-31T16:49:47.963 に答える