我正在尝试访问远程存储库上的分支的提交历史记录。我查看了the doc但是找不到有关如何使用我的本地git客户端访问远程repo的提交历史记录的任何实质性信息。
答案 0 :(得分:222)
git log remotename/branchname
将在该存储库中显示给定远程分支的日志,但仅显示从其存储库“获取”到远程存储库的个人“副本”的日志。
请记住,您的存储库克隆只会通过git fetch
更新其任何远程分支的状态。您无法直接连接到服务器以检查日志,您所做的是使用git fetch
下载服务器的状态,然后在本地查看远程分支的日志。
也许另一个有用的命令可能是:
git log HEAD..remote/branch
将显示远程分支中的提交,但不会显示当前分支(HEAD
)中的提交。
答案 1 :(得分:52)
git remote add origin <remote reference>
git fetch
git log origin/master
答案 2 :(得分:11)
您只能查看本地存储库上的日志,但是这可以包括您已设置的所有远程控制器的已获取分支。
所以,如果你克隆一个回购......
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
所有选项都可以像登录本地分支一样工作。
答案 3 :(得分:10)
我不相信这是可能的。我相信您必须在本地克隆该远程仓库并在其上执行git fetch
,然后才能对其发出git log
。
答案 4 :(得分:10)
快速执行此操作的方法是使用--bare
关键字进行克隆,然后检查日志:
git clone --bare git@giturl tmpdir
cd tmpdir
git log branch
答案 5 :(得分:10)
这对我有用:
git fetch --all
git log production/master
请注意,这是从所有遥控器中提取的,即可能是"have to clone 2GB worth of objects just to look through the commit logs"。
答案 6 :(得分:4)
我不确定何时添加过滤,但是如果您只想获取历史记录/引用日志,这是一种排除对象斑点的方法:
git clone --filter=blob:none --no-checkout --single-branch --branch master git://some.repo.git .
git log
答案 7 :(得分:0)
您可以轻松获取远程服务器的日志。 方法如下:
(1)如果通过ssh使用git - 那么只需使用你的git登录名和密码登录到远程服务器 - 并使用存储库所在的远程文件夹chdir-并在你的存储库中运行“git log”命令远程服务器。
(2)如果通过Unix的标准登录协议使用git,那么只需telnet到你的远程服务器并在那里做一个git log。
希望这有帮助。
答案 8 :(得分:0)
这是一项bash功能,可轻松在远程上查看日志。它带有两个可选参数。第一个是分支,默认为 master 。第二个是远程,默认为登台。
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
答案 9 :(得分:0)
git
不是svn
这样的集中式scm,因此您有两个选择:
为许多不同的平台(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是因为它们的大小和安全性,没有广告