sebastianfeldmann/git
PHP library to access and interact with Git repositories. Provides a simple API for common Git commands and info (status, log, branches, tags), ideal for build scripts, CI tooling, and automation where you need Git data without shelling out manually.
This lib is used to execute git commands directly from PHP via a defined api.
All you have to do is setup a Repository object, retrieve a command Operator
and fire away. Each git command like git config or git log is handled
by a separate Operator. Follow the next steps to give it a try.
The git package is installable via composer. Just run the following command.
$ composer require sebastianfeldmann/git
Setup the Repository
$repoRootPath = '/var/www/my-project';
$gitRepository = new Git\Repository($repoRootPath);
Retrieve the needed Operator
$log = $gitRepository->getLogOperator();
Get files and commits since some tag
$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();
Get the current tag:
// git describe --tag
$tag = $infoOperator->getCurrentTag();
Get tags for a given commit:
// git tag --points-at HEAD
$tags = $infoOperator->getTagsPointingTo('HEAD');
Get the current branch:
// git rev-parse --abbrev-ref HEAD
$branch = $infoOperator->getCurrentBranch();
Get a list of staged files:
// git diff-index --cached --name-status HEAD
$files = $indexOperator->getStagedFiles();
Get all current git settings:
// git config --list
$config = $configOperator->getSettings();
Get all changed files since a given commit or tag:
// git log --format='' --name-only $HASH
$files = $logOperator->changedFilesSince('1.0.0');
Get differences between two versions
// git diff '1.0.0' '1.1.0'
$changes = $diffOperator->compare('1.0.0', '1.1.0');
How can I help you explore Laravel packages today?