【问题标题】:Git remote log and changes requestGit 远程日志和更改请求
【发布时间】:2010-11-26 21:18:46
【问题描述】:

我需要在不克隆 repo 的情况下接收有关修订、文件更改和更改的代码行数的数据,我唯一拥有的是 repo url。我发现用于查看远程更改的唯一命令是 git ls remote,但它的输出太差了。我该怎么做?

【问题讨论】:

  • 如果不克隆存储库,我认为您无法做到这一点。

标签: git


【解决方案1】:

仅使用 Git 协议无法完成您要求的操作。

根据存储库的托管方式,您可以通过web interface 获取一些信息。 gitweb 与 Git 一起分发,大型托管服务通常有自己的 Web 界面。


  • gitweb 示例:git.git viewing commit tagged 1.7.3.2
    • 顶部链接
      • “log”或“shortlog”显示导致提交的历史记录
      • “commitdiff”访问与父级的差异
      • 合并/父级缩写对象名称(十六进制字符串)移动到该父级
    • 每个父链接
      • “diff”链接显示与该父级的差异
      • “提交”链接移动到该父级
    • “树”链接显示提交中捕获的文件
    • 每个文件的链接
      • “diff”(“diffN”表示合并)仅显示该文件的差异
      • “blob”显示文件的内容
      • “历史”显示导致当前提交修改此文件的提交

  • GitHub 示例:git.git viewing commit tagged 1.7.3.2
    • “提交”选项卡显示历史记录
      • “commit”/“parent”缩写的对象名(十六进制字符串)带你到提交;表明
        • 为该提交更改的文件
          • 右侧的绿色和红色方块显示每个文件中添加/删除的行数
        • 提交的差异
          • “查看文件”显示在该提交中捕获的整个文件
            • “原始”查看/下载文件
            • “blame”显示了最近提交以更改此文件的每一行
            • “历史”显示导致更改此文件的当前提交的提交

如果您打算在历史上进行任何重要的挖掘,那么克隆存储库可能是值得的(如果托管服务没有某种网络界面)。您将不得不使用一些磁盘空间,但您的调查将不仅限于 Web 界面提供的内容,而且速度会更快。

另一种可能性是git archive;它是一个可选服务器,因此它可能没有为托管您的存储库的服务器启用。它允许您下载单个树的档案(例如 tar 或 zip 文件)。从技术上讲,您可以提取此类档案并手动区分它们以获取您所追求的信息,但这可能比仅克隆存储库和使用普通工具(即 git log--stat 或 @ 987654328@ 有或没有-m/-c/--cc)。

【讨论】:

    【解决方案2】:

    如果您的存储库 URL 用于 ssh 类型的连接,那么您可以通过 ssh 发出远程日志命令,例如

    如果您可以使用以下命令进行克隆:

    git clone username@host:/path/to/repository.git
    

    那么您应该可以使用以下命令发出日志命令:

    ssh username@host git --git-dir /path/to/repository.git log
    

    【讨论】:

    • 只有当你有一个实际的外壳时才有效。大多数系统使用 git-shell,它只允许接收包、上传包、上传存档、cvs 服务器以及任何明确列入白名单的内容。
    【解决方案3】:

    如果你可以访问服务器,你可以在服务器本地运行 git log,解析数据并返回聚合结果。

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2014-08-02
      • 2014-04-27
      相关资源
      最近更新 更多