在远程存储库上提交历史记录


206

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

Answers:


252
git log remotename/branchname

将显示该存储库中给定远程分支的日志,但仅显示您从其存储库“获取”到远程存储库的个人“副本”的日志。

请记住,您的存储库克隆仅会通过更新来更新任何远程分支的状态git fetch。您无法直接连接到服务器以查看那里的日志,您要做的是下载服务器的状态,git fetch然后在本地查看远程分支的日志。

也许另一个有用的命令可能是:

git log HEAD..remote/branch

它将显示您在远程分支中但不在当前分支(HEAD)中的提交。


8
“您无法直接连接到服务器以查看那里的日志” –这就是我遇到的问题
Brian J

1
我只是在本地获取更改...请注意远程更改,甚至之前也要进行获取。
Loenix

6
执行此操作时,git fetch您需要使用--all从远程获取。
ocodo

25
太糟糕了,因此我必须克隆2GB的对象才能查看提交日志?
TWiStErRob '16

2
@TWiStErRob,您可以通过管理使用浅克隆副本获取的数据量来减轻痛苦(请参阅git-scm.com/docs/git-clone中的--depth),然后使用来管理获取(请参见git-scm中的 “浅”).com / docs / git-fetch)。
qneill

66

注意 下面的“ origin”用于表示克隆存储库的上游,将“ origin”替换为远程仓库的描述性名称。“远程引用”可以使用克隆命令中使用的相同格式。

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

2
@ user1795998远程存储库Git URL,例如git://git.somedomain.tld/some/repo
gertvdijk 2012年

1
如果您不跟踪遥控器上的任何分支,则<refspec>在提取(或使用fetch --all)时是否不需要指定?
gertvdijk 2012年

1
“项目供应商/诊断”是什么意思?那是存储库中的文件夹吗?另一个分公司?
LopSae 2012年

1
一个存储库可以有多个分支,但是“项目”不是与git相关的术语,从那里到在这种情况下“项目”的含义都是混乱的。但是,这与问题有什么关系?
LopSae 2012年

1
我不认为有可能在GIT中做到这一点。您必须先克隆该远程存储库,然后才能对其发出git日志。
user959690

12

您只能在本地存储库上查看日志,但是该日志可以包括已设置的所有远程数据库的访存分支。

因此,如果您克隆存储库...

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

所有选项都将与登录本地分支机构一样工作。


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

我不确定何时添加过滤,但是如果您只想获取历史记录/引用日志,这是一种排除对象斑点的方法:

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

这是完美的。给定其他答案,如果它能够在提供的答案旁边脱颖而出,那就太好了。
埃里克·库西诺

0

您可以轻松获取远程服务器的日志。这是如何做:

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

(2)如果通过Unix的标准登录协议使用git,则只需telnet到您的远程服务器并在其中进行git日志。

希望这可以帮助。


13
改写一下,“您无法获取远程服务器的日志,必须使用本地git客户端登录并获取日志”
qneill

只需删除此答案,它就不能回答问题,也不是大多数git用户没有服务器外壳访问权限的方法
nhed

0

这是一个bash功能,可轻松查看远程日志。它带有两个可选参数。第一个是分支,默认为master。第二个是远程,默认为暂存

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.