PHP git 封装器

3.11.0 2024-01-23 09:11 UTC

README

Latest Stable Version Minimum PHP Version Downloads License Build Status Scrutinizer Code Quality Code Coverage

此库用于通过定义的 API 从 PHP 直接执行 git 命令。您只需设置一个 Repository 对象,检索一个命令 Operator 并执行即可。每个 git 命令,如 git config 或 git log,都由一个单独的 Operator 处理。按照以下步骤尝试一下。

安装

通过 composer 安装 git 包。只需运行以下命令。

$ composer require sebastianfeldmann/git

用法

设置 Repository

$repoRootPath  = '/var/www/my-project';
$gitRepository = new Git\Repository($repoRootPath);

检索所需的 Operator

$log = $gitRepository->getLogOperator();

获取某些标签以来的文件和提交

$files   = $log->getChangedFilesSince('1.0.0');
$commits = $log->getCommitsSince('1.0.0');

复制粘贴示例

use SebastianFeldmann\Git;

require __DIR__ . '/../vendor/autoload.php';

// path to repository without .git
$repoRootPath  = '/path/to/repo';
$gitRepository = new Git\Repository($repoRootPath);

// get files and commits since hash or tag
$log     = $gitRepository->getLogOperator();
$files   = $log->getChangedFilesSince('1.0.0');
$commits = $log->getCommitsSince('1.0.0');

// check the index status
$index = $gitRepository->getIndexOperator();
$files = $index->getStagedFiles();

可用操作符

  • 配置 - 访问所有 git 设置,例如换行设置。
  • 差异 - 比较两个版本。
  • 索引 - 检查暂存区。
  • 信息 - 访问当前状态,如分支名称或提交哈希。
  • 日志 - 返回已更改的文件和其他 git 日志信息。

示例命令

获取当前标签

// git describe --tag
$tag = $infoOperator->getCurrentTag();

获取给定提交的标签

// git tag --points-at HEAD
$tags = $infoOperator->getTagsPointingTo('HEAD');

获取当前分支

// git rev-parse --abbrev-ref HEAD
$branch = $infoOperator->getCurrentBranch();

获取已暂存的文件列表

// git diff-index --cached --name-status HEAD
$files = $indexOperator->getStagedFiles();

获取所有当前 git 设置

// git config --list
$config = $configOperator->getSettings();

获取自给定提交或标签以来的所有已更改的文件

// git log --format='' --name-only $HASH
$files = $logOperator->changedFilesSince('1.0.0');

获取两个版本之间的差异

// git diff '1.0.0' '1.1.0'
$changes = $diffOperator->compare('1.0.0', '1.1.0');