リモートリポジトリのコミット履歴


206

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

回答:


252
git log remotename/branchname

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

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

おそらく、別の便利なコマンドは次のとおりです。

git log HEAD..remote/branch

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


8
「サーバーに直接接続してログを確認することはできません」-それが私が抱えていた問題でした
Brian J

1
ローカルでプルされた変更のみを取得しています...リモートでの変更に注意してください。
Loenix 2015

6
行うときは、リモートからフェッチgit fetchするために使用--allする必要があります。
ocodo 2015

25
それはあまりにも悪いので、コミットログを確認するためだけに2GB相当のオブジェクトを複製する必要がありますか?
TWiStErRob

2
こんにちは@TWiStErRobあなたはデータの量を管理することにより痛みを緩和することができます(中--depth参照浅いクローンでフェッチgit-scm.com/docs/git-clone)、そして(で「浅い」を参照してフェッチ管理にgit-SCMを.com / docs / git-fetch)。
qneill 2017年

66

NB。以下の「origin」は、複製されたリポジトリの上流を表すために使用します。「origin」をリモートリポジトリの説明的な名前に置き換えます。「リモート参照」では、cloneコマンドで使用されるのと同じ形式を使用できます。

git remote add origin <remote reference>
git fetch
git log origin/master

2
@ user1795998リモートリポジトリのGit URL。例git://git.somedomain.tld/some/repo
gertvdijk

1
リモートでブランチを追跡しない場合は<refspec>、フェッチ(またはを使用fetch --all)するときに指定する必要はありませんか?
gertvdijk

1
「プロジェクトベンダー/診断」とはどういう意味ですか?それはリポジトリ内のフォルダですか?別のブランチ?
LopSae

1
リポジトリは複数のブランチを持つことができますが、「プロジェクト」はgitに関する用語ではありません。そこから混乱が生じ、この場合の「プロジェクト」の意味がわかります。それでも、それは質問とどう関係しているのでしょうか?
LopSae

1
GITでこれを行うことが可能であるとは思わない。gitログを発行する前に、そのリモートリポジトリのクローンを作成する必要があります。
user959690

12

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

したがって、リポジトリを複製すると...

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

すべてのオプションは、ローカルブランチのログオンと同じように機能します。


12

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

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch

11

これが可能だとは思いません。リモートリポジトリをローカルで複製しgit fetch、それに対して実行する前に実行する必要があるgit logと思います。


1
すでにリポジトリをローカルにクローンして、いくつかの変更を行っているとします。。次に、誰かがリモートリポジトリにコミットしたかどうかを確認します
Chhorn Elit

2
この答えを「不可能」に変更すると、これが最良の答えです。リモートgitクライアントを使用してリモートリポジトリのコミット履歴にアクセスする方法はありません。
qneill


2

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

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log

これは完璧です。他の回答を考えれば、これが提供された回答の隣で目立つことができれば素晴らしいでしょう。
Eric Cousineau

0

リモートサーバーのログを簡単に取得できます。方法は次のとおりです。

(1)ssh経由でgitを使用する場合-gitログインとパスワードを使用してリモートサーバーにログインし、リポジトリが存在するリモートフォルダーにchdirして、リモートサーバーのリポジトリ内で「git log」コマンドを実行します。

(2)Unixの標準ログインプロトコルを介してgitを使用している場合-リモートサーバーにtelnetで接続し、そこにgitログを記録します。

お役に立てれば。


13
言い換えると、「リモートサーバーのログを取得することはできません。ローカルgitクライアントを使用してログインし、ログを取得する必要があります」
qneill

この回答を削除するだけで、質問には回答せず、どのようにほとんどのgitユーザーがサーバーシェルにアクセスできないのかはわかりません
nhed

0

これは、リモートでログを簡単に表示できるbash関数です。2つのオプションの引数を取ります。最初のものはブランチで、デフォルトはマスターです。2つ目はリモートで、デフォルトはステージングです。

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}

  git checkout $remote/$branch
  git fetch
  git log
  git checkout -
}

例:

 $ git_log_remote
 $ git_log_remote development origin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.