bit3 / git-php
Easy to use GIT wrapper for PHP.
Installs: 129 434
Dependents: 8
Suggesters: 0
Security: 0
Stars: 47
Watchers: 5
Forks: 24
Open Issues: 3
Requires
- php: ^5.6 || ^7.0
- psr/log: ^1.0
- symfony/process: ^3.4 || ^4.0 || ^5.0
Requires (Dev)
- phpcq/all-tasks: ^1.1
- phpunit/phpunit: ^5.0 || ^6.0 || ^7.0
- symfony/filesystem: ^3.4 || ^4.0 || ^5.0
This package is auto-updated.
Last update: 2024-12-16 13:01:10 UTC
README
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
use Bit3\GitPhp\GitRepository; $directory = '/path/to/git/target/directory'; $git = new GitRepository($directory); $git->init()->execute();
clone a git repository
The clone
command is named cloneRepository()
because clone
is a reserved word in PHP.
use Bit3\GitPhp\GitRepository; $directory = '/path/to/git/target/directory'; $git = new GitRepository($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' => '?', // )