获取远程服务器上两次提交之间的所有提交?

Posted

技术标签:

【中文标题】获取远程服务器上两次提交之间的所有提交?【英文标题】:get all commits between two commits on remote server? 【发布时间】:2020-12-15 08:44:08 【问题描述】:

如何获取远程服务器上两次提交之间的所有提交。

看过gerrit rest api但没有找到效果方式,和 不想在本地克隆远程 repo 以获得结果,因为有很多 repo。

【问题讨论】:

【参考方案1】:

如果你可以访问 gerrit 服务器,

ssh <username>@<serverip> GIT_DIR=/path/to/the/repository.git git log commit1..commit2

username 是用于登录服务器的本地用户,而不是登录 Gerrit 网站的用户名。对于脚本,推荐使用 Python 的paramiko

import os
import paramiko

paramiko.util.log_to_file(os.devnull)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(
    hostname='',  # gerrit server ip
    username='',  # server username
    password='',) # password
cmd = 'GIT_DIR=/path/to/the/repository.git git log commit1..commit2'
i, o, e = ssh.exec_command(cmd)
print o.read()

【讨论】:

为了完整起见,除了GIT_DIR=语法之外,还可以使用-C/--git-dir选项(这些之间的差异已回答here)

以上是关于获取远程服务器上两次提交之间的所有提交?的主要内容,如果未能解决你的问题,请参考以下文章

远程代码执行漏洞是啥意思

openssh 远程代码执行漏洞 怎么解决

我可以通过 GH API 在两次提交之间获取一个文件的差异数据吗?

github本地提交代码到远程仓库

为啥电脑总会出现远程执行代码漏洞,修复了还是出?

Git实用记录