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

use*_*998 193 git git-log

我试图访问远程存储库上的分支的提交历史记录.我看了一下doc但是找不到任何关于如何使用我的本地git客户端访问远程repo的提交历史的实质性信息.

Lop*_*Sae 236

git log remotename/branchname
Run Code Online (Sandbox Code Playgroud)

将在该存储库中显示给定远程分支的日志,但仅显示已从其存储库"获取"到远程存储库的个人"副本"的日志.

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

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

git log HEAD..remote/branch
Run Code Online (Sandbox Code Playgroud)

它将显示远程分支中的提交,但不会显示当前分支(HEAD)中的提交.

  • 这太糟糕了,所以我必须克隆2GB的对象才能查看提交日志? (20认同)
  • "你无法直接连接到服务器来检查那里的日志" - 这就是我遇到的问题 (7认同)
  • 在执行`git fetch`时,你需要使用`--all`来从遥控器中取出. (5认同)
  • 嗨@TWiStErRob,您可以通过管理使用浅克隆获取的数据量来减轻痛苦(请参阅 https://git-scm.com/docs/git-clone 中的 --depth),然后使用(请参阅“浅”)在 https://git-scm.com/docs/git-fetch 中)。 (2认同)

小智 55

git remote add origin <remote reference>
git fetch
git log origin/master
Run Code Online (Sandbox Code Playgroud)

  • @ user1795998远程存储库Git URL,例如`git:// git.somedomain.tld/some/repo` (2认同)
  • 如果您不跟踪远程上的任何分支,是否不需要在获取时指定 `&lt;refspec&gt;`(或使用 `fetch --all`)? (2认同)
  • 我不相信在 GIT 中可以做到这一点。您必须先克隆该远程存储库,然后才能针对它发出 git 日志。 (2认同)

ste*_*r25 13

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

git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log
Run Code Online (Sandbox Code Playgroud)

  • 另外,由于您正在检查特定分支,您还可以添加 --filter=tree:0 来排除其他分支树。添加 tree:0 比不添加时小 75%。 (4认同)
  • 为此你值得 20 颗星...... (3认同)
  • 太棒了*。考虑到其他答案,如果它能够在提供的答案旁边脱颖而出,那就太棒了。 (2认同)

oco*_*odo 11

您只能查看本地存储库上的日志,但是这可以包括您已设置的所有远程控制器的已获取分支.

所以,如果你克隆一个回购...

git clone git@gitserver:folder/repo.git
Run Code Online (Sandbox Code Playgroud)

这将默认为origin/master.

除了origin我们添加之外,你可以在这个仓库中添加一个遥控器production.从本地clone文件夹中:

git remote add production git@production-server:folder/repo.git
Run Code Online (Sandbox Code Playgroud)

如果我们想要查看production我们需要做的日志:

git fetch --all 
Run Code Online (Sandbox Code Playgroud)

这是从所有遥控器获取(默认提取,不会--all从中获取origin)

获取后我们可以查看production遥控器上的日志,您还必须指定分支.

git log production/master
Run Code Online (Sandbox Code Playgroud)

所有选项都可以像登录本地分支一样工作.


use*_*690 10

我不相信这是可能的.我相信你必须在本地克隆那个远程仓库,并git fetch在你发出git log反对之前对其进行执行.

  • 如果您将此答案更改为“这是不可能的”,那么这是最佳答案。无法使用远程 git 客户端访问远程仓库的提交历史记录。 (2认同)

dav*_*vvs 10

一种快速的方法是使用--bare关键字克隆,然后检查日志:

git clone --bare git@giturl tmpdir
cd tmpdir
git log branch
Run Code Online (Sandbox Code Playgroud)


Fel*_*ger 10

这对我有用:

git fetch --all 
git log production/master
Run Code Online (Sandbox Code Playgroud)

请注意,这是从所有遥控器中获取的,即可能"必须克隆2GB的对象才能查看提交日志".