Git Client

1.11.1 · active · verified Tue Apr 21

git-client is a lightweight, Promise-based Git client for Node.js, currently at stable version 1.11.1. It distinguishes itself by directly executing the system's `git` binary, offering a robust and comprehensive interface to all Git operations rather than reimplementing them in JavaScript. The library provides a clean, Promise-based API for command execution, supporting automatic method generation for Git commands, flexible option handling (both short and long format), and a 'spawn mode' for streaming operations. It includes full TypeScript support and has minimal dependencies. Recent releases indicate an active development cadence, with improvements and fixes rolled out every few weeks to months. It requires Node.js 16.x or higher and the `git` command-line tool to be installed and accessible in the system PATH.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates basic Git command execution using the default function and named methods, and includes a check for Git availability.

import git from 'git-client';

async function runGitCommands() {
  try {
    // Ensure Git is installed and available
    await git('version');
    console.log('Git is available and working.');

    // Example 1: Get current commit hash using the default function
    const hash = await git('rev-parse', 'HEAD');
    console.log(`Current commit hash: ${hash}`);

    // Example 2: Get status using a named method with options
    const status = await git.status({ porcelain: true });
    console.log('Git status (porcelain mode):\n' + status);

    // Example 3: Initialize a new Git instance for a custom directory
    // For a real scenario, you'd ensure this directory exists and is a repo.
    // const customRepoPath = process.env.CUSTOM_REPO_PATH ?? '/tmp/my-test-repo';
    // if (!fs.existsSync(customRepoPath)) {
    //   fs.mkdirSync(customRepoPath);
    // }
    // const customGit = new Git({ gitDir: `${customRepoPath}/.git`, workTree: customRepoPath });
    // const customStatus = await customGit.status();
    // console.log(`Status of custom repo: ${customStatus}`);

  } catch (error) {
    console.error('Failed to execute git command:', error);
    if (error.message.includes('spawn git ENOENT')) {
      console.error('Hint: Make sure Git is installed and in your system PATH.');
    }
  }
}

runGitCommands();

view raw JSON →