Skip to content

artkonekt/git-php

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Run Git Commands from PHP

Tests Packagist Stable Version Packagist downloads StyleCI MIT Software License

This repository was forked from bit3/git-php at its version 1.5.0.

GIT Wrapper for PHP

This is a lightweight wrapper, providing the git commands in PHP.

Examples

The API use command builders, that allow you to build a command and execute it one time.

The main synopsis is:

$git->command()->option()->execute();

$git->command() will create a new command, *->option() will add an option to the command and *->execute() will finally execute the command.

The naming of commands and options follow the git naming. If you search for documentation of a specific command or option, just look into the git documentation. You will find the command/option there.

init a new git repository

GitRepository::in('/path/to/git/target/directory')->init()->execute();

clone a git repository

The clone command is named cloneRepository() because clone is a reserved word in PHP.

$git = GitRepository::in('/path/to/repo');
$git->cloneRepository()->execute();

describe

$annotatedTag   = $git->describe()->execute();
$lightweightTag = $git->describe()->tags()->execute();
$recentRef      = $git->describe()->all()->execute();

set remote fetch url

$git->remote()
    ->setUrl('origin', '[email protected]:bit3/git-php.git')
    ->execute();

set remote push url

$git->remote()
    ->setPushUrl('origin', '[email protected]:bit3/git-php.git')
    ->execute();

add new remote

$git->remote()
    ->add('github', '[email protected]:bit3/git-php.git')
    ->execute();

fetch remote objects

$git->fetch()->execute('github');

checkout

$git->checkout()->execute('hotfix/1.2.3');

checkout specific path

$git->checkout()->execute('hotfix/1.2.3', '/fileA', '/fileB', '/dir/fileC');

push objects

$git->push()->execute('github', 'hotfix/1.2.3');

add file to staging index

$git->add()->execute('file/to/add.ext');

remove file

$git->rm()->execute('file/to/remove.ext');

commit changes

$git->commit()->message('Commit message')->execute();

create a tag

$git->tag()->execute('v1.2.3');

Convenience and shortcut methods

list remotes

$remotes = $git->remote()->getNames();

// array(
//     'origin',
//     'composer',
// )

list branches

$remotes = $git->branch()->getNames();

// array(
//     'master',
//     'hotfix/1.2.3',
// )

list remote tracking branches

$remotes = $git->branch()->remotes()->getNames();

// array(
//     'origin/master',
//     'origin/hotfix/1.2.3',
//     'origin/release/4.5.6',
// )

list branches including remote tracking branches

$remotes = $git->branch()->all()->getNames();

// array(
//     'master',
//     'hotfix/1.2.3',
//     'remotes/origin/master',
//     'remotes/origin/hotfix/1.2.3',
//     'remotes/origin/release/4.5.6',
// )

get modification status

$status = $git->status()->getStatus();

// array(
//     'existing-file.txt'      => array('index' => 'D',   'worktree' => false),
//     'removed-but-staged.txt' => array('index' => 'D',   'worktree' => 'A'),
//     'staged-file.txt'        => array('index' => false, 'worktree' => 'A'),
//     'unknown-file.txt'       => array('index' => '?',   'worktree' => '?'),
// )

get index modification status

$status = $git->status()->getIndexStatus();

// array(
//     'existing-file.txt'      => 'D',
//     'removed-but-staged.txt' => 'D',
//     'staged-file.txt'        => false,
//     'unknown-file.txt'       => '?',
// )

get worktree modification status

$status = $git->status()->getWorkTreeStatus();

// array(
//     'existing-file.txt'      => 'worktree' => false,
//     'removed-but-staged.txt' => 'worktree' => 'A',
//     'staged-file.txt'        => 'worktree' => 'A',
//     'unknown-file.txt'       => 'worktree' => '?',
// )

Packages

No packages published

Languages

  • PHP 100.0%