Node.js libgit2 asynchronous native bindings

npm install nodegit
24 downloads in the last day
118 downloads in the last week
710 downloads in the last month


Node.js libgit2 bindings

v0.1.1 Build

Maintained by Tim Branyen @tbranyen, Michael Robinson @codeofinterest, and Nick Kallen @nk, with help from awesome contributors!

API Documentation

Documentation may be found here: nodegit documentation.

Building and installing


To install nodegit you need Node.js, python and cmake (>=2.8).

This will install and configure everything you need to use nodegit.

$ npm run-script gen && npm install && npm test

Mac OS X/Linux/Unix

Install nodegit by cloning source from GitHub and running node install:

# Install system dependencies
$ brew install cmake libzip
$ npm install -g node-gyp
$ git clone git://
$ cd nodegit
$ npm run-script gen && npm install

Windows via Cygwin

nodegit has been compiled and tested to work with the setup required to build and run Node.js itself.

Instructions on compiling Node.js on a Windows platform can be found here:

API Example Usage

Below are two examples. There are several more.

Git Log Emulation

var git = require('../'),
    path = require('path');, '/tmp/repo/.git'), function(error, repo) {
  if (error) throw error;

  repo.getMaster(function(error, branch) {
    if (error) throw error;

    // History returns an event.
    var history = branch.history();

    // History emits 'commit' event for each commit in the branch's history
    history.on('commit', function(commit) {
      console.log('commit ' + commit.sha());
      console.log('Author:', + ' <' + + '>');
      console.log('\n    ' + commit.message());

    // Don't forget to call `start()`!

Clone a repo and read a file

git.Repo.clone("", path, null, function(error, repo) {
  if (error) throw error;

  repo.getCommit('59b20b8d5c6ff8d09518454d4dd8b7b30f095ab5', function(error, commit) {
    if (error) throw error;

    commit.getEntry('', function(error, entry) {
      if (error) throw error;

      entry.getBlob(function(error, blob) {
        if (error) throw error;

        console.log(, entry.sha(), blob.size() + 'b');
        var firstTenLines = blob.toString().split('\n').slice(0, 10).join('\n');
}); alpha

npm loves you