Node.js libgit2 asynchronous native bindings

npm install nodegit-papandreou
1 downloads in the last day
15 downloads in the last week
37 downloads in the last month


Node.js libgit2 bindings

v0.1.0 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:

$ 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