Skip to content

Repository files navigation

Build StatusLatest Version taggedLatest Version on PackagistInstallations via composer per month

Easy to use GIT wrapper for php

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

Usage 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

useBit3\GitPhp\GitRepository;
$directory = '/path/to/git/target/directory';
$git = newGitRepository($directory);
$git->init()->execute();

clone a git repository

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

useBit3\GitPhp\GitRepository;
$directory = '/path/to/git/target/directory';
$git = newGitRepository($directory);
$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', 'git@github.com:bit3/git-php.git')
->execute();

set remote push url

$git->remote()
->setPushUrl('origin', 'git@github.com:bit3/git-php.git')
->execute();

add new remote

$git->remote()
->add('github', 'git@github.com: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' => '?',// )

About

[PHP] Easy to use GIT wrapper for php

Resources

Stars

47 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages