247

我正在尝试访问远程存储库上的分支提交历史记录。我查看了文档,但找不到有关如何使用本地 git 客户端访问远程 repo 提交历史的任何实质性信息。

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

这对我有用:

git fetch --all 
git log production/master

请注意,这从所有远程获取,即您可能“必须克隆价值 2GB 的对象才能查看提交日志”

于 2018-02-17T08:53:28.307 回答
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

您只能在本地存储库中查看日志,但是其中可以包括您设置的所有远程的提取分支。

所以,如果你克隆一个 repo...

git clone git@gitserver:folder/repo.git

这将默认为origin/master.

除了origin让我们添加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 回答
11

我不相信这是可能的。我相信您必须先在本地克隆该远程仓库并对其执行git fetch,然后才能针对它发出git log警告。

于 2015-01-26T19:22:32.023 回答
2

git不是像这样的集中式 scm,svn因此您有两种选择:

为许多不同的平台(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

两者都针对性能进行了优化,将一个分支的 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 回答
0

这是一个 bash 函数,可以轻松查看远程日志。它需要两个可选参数。第一个是分支,默认为master。第二个是remote,默认是staging

git_log_remote() {
  branch=${1:-master}
  remote=${2:-staging}
  
  git fetch $remote
  git checkout $remote/$branch
  git log
  git checkout -
}

例子:

 $ git_log_remote
 $ git_log_remote development origin
于 2020-06-09T18:21:38.293 回答
-4

您可以轻松获取远程服务器的日志。就是这样:

(1) 如果通过 ssh 使用 git - 那么只需使用您的 git 登录名和密码登录到远程服务器 - 并 chdir 存储库所在的远程文件夹 - 并在远程服务器上的存储库中运行“git log”命令。

(2) 如果通过 Unix 的标准登录协议使用 git,那么只需 telnet 到您的远程服务器并在那里执行 git log。

希望这可以帮助。

于 2016-05-26T11:53:43.590 回答