Provides Access to Git Repositories

Interface to the 'libgit2' library, which is a pure C implementation of the 'Git' core methods. Provides access to 'Git' repositories to extract data and running some basic 'Git' commands.


git2r 0.21.0

  • Added methods 'odb_blobs' and 'odb_objects' with missing repository signature. Internally, they use 'getwd' and 'discover_repository' to open a repository.


  • The bundled libgit2 source code has been reverted to libgit2 v0.26.0 (15e1193) from 14 June 2017 (same as in git2r v0.19.0) to fix memory alignment errors.

git2r 0.20.0


  • Updated the bundled libgit2 source code to commit (fa8cf14) from 16 December 2017.

  • Improvements to the build configuration script.


  • Fixed the internal callback for remote host authentication from hanging indefinitely when querying an ssh-agent for credentials. Now, the callback signals an error instead of trying again if the authentication failed the first time.

git2r 0.19.0


  • Updated the bundled libgit2 source code to commit (15e1193) (v0.26.0) from 14 June 2017.

  • Added 'checkout' argument to 'clone()'. Allows to control whether checkout of HEAD is performed after the clone is complete. Setting 'checkout=FALSE' has similar effect as the git command line option '--no-checkout'. Andrzej K. Oles in #282.


  • Fixed memory protection errors in the git2r C source code reported by the 'rchk' tool.

  • Added missing calls to 'R_forceSymbols' and 'R_useDynamicSymbols' in the C init function.

  • Enable argument 'all' to commit multiple modified (or deleted) files. John Blischak in #283

  • Changed the configure script to determine the architecture of the machine earlier in order to fix an unsupported architecture error encountered on CentOS (#268, #288).

git2r 0.18.0


  • This is a bug-fix release to solve an error introduced in the build configuration on mac in version 0.17.0. The package failed with 'unable to load shared object', see issue #267.

git2r 0.17.0


  • Updated the bundled libgit2 source code to commit (6b0510e) from 20 December 2016.

  • Static linking of LibSSH2 on mac to support redistributable binary package with SSH transport enabled. Version 1.8.0 of LibSSH2 is downloaded and built from ''.

git2r 0.16.0


  • Updated libgit2 source code to commit (6b0510e) from 17 November 2016.

  • Add the option 'all_untracked' to the 'status' method to show individual files in untracked directories if the 'untracked' option is TRUE.

  • Add the 'tag_delete' method to delete an existing tag reference.

  • Update build configuration to support OpenSSL 1.1.0.

  • If the the 'getPass' package is installed the 'cred_ssh_key' method to create a new passphrase-protected ssh key credential object will call the 'getPass::getPass()' method if the private key is passphrase protected to allow for interactive input of the passphrase. The 'getPass' package is a suggested package. (Peter Meissner in PR #254)

  • Add 'path' argument to the 'reset' method to enable path-specific unstage, i.e. resets the index entries for all paths to their state at HEAD


  • Build configuration: use portable string equality comparison operator. This fixes the build e.g. for those without Bash as /bin/sh. (Sander Maijers in PR #243).

git2r 0.15.0


  • Build configuration: 'pkg-config' is now used to find 'libssl', if possible (Elias Pipping in PR #231).

  • Added a method to coerce a 'git_commit' object to a 'data.frame'.

  • Added the method 'is_branch' to check if an object is a 'git_branch'.


  • Build configuration: fixed installation with parallel make (Kirill Müller in PR #228).

git2r 0.14.0


  • Updated libgit2 source code to commit (785d8c48) from 2016-03-04. This is release v0.24.0 of libgit2.

  • Refactoring of the build scripts.

  • Added a check that the configuration key is valid when setting a configuration variable and output a warning if the key is invalid.

  • The status method now prints "working directory clean" instead of nothing when the working directory is clean.

  • Added the 'refspec' argument to the 'fetch' method to specify the refs to fetch and which local refs to update.

  • Added a workaround to the 'commit' method to list commits in a shallow clone since the libgit2 library does not yet support this.

git2r 0.13.1


  • This is a bug-fix release to solve problems introduced in version 0.12.1:

    • The bundled libgit2 source code has been reverted to commit (98f7bd2) from 2015-08-05 (same as in v0.11.0) to fix memory alignment errors (clang-UBSAN and gcc-UBSAN).

    • OpenSSL is now used again on OS X to provide the cryptographic support for HTTPS connections to fix a significant compiler warning (arithmetic on a pointer to void is a GNU extension [-Wpointer-arith]) on r-devel-osx-x86_64-clang.

    • Several fixes to the build configuration on non-Windows platforms.

git2r 0.12.1


  • Add 'remote_ls' method to list references in a remote repository akin to the git ls-remote command.

  • Add 'remote_set_url' method to set the remote's url in the configuration.

  • Add 'cred_token' S4 class to hold the name of the environmental variable with the secret. Default value for the name is GITHUB_PAT.

  • It is now possible to checkout a specific file with the 'checkout' method.

  • Add 'ssl_cert_locations' method to set libgit2 global option 'GIT_OPT_SET_SSL_CERT_LOCATIONS'

  • Add 'ceiling' argument to 'discover_repository' method to prevent search from walking up the parent directories.


  • Improvments to the cred_* functions documentation.

  • Add the following default arguments to the 'cred_ssh_key' method: publickey = '~/.ssh/' and privatekey = '~/.ssh/id_rsa'

  • On OSX, cascade CPPFLAGS and LDFLAGS to libssh2 build to allow libssh2 to be built against a user-installed openssl, discovered by configure or from R's Makeconf. Necessary to build on OS X ≥ 10.11

  • On OS X, SecureTransport is now used to provide the cryptographic support for HTTPS connections insead of OpenSSL.

  • The search for libssh2 during configuration (non Windows) is now done via pkg-config.

  • Update OpenSSL on Windows to v1.0.2d

  • Update libgit2 source code to commit (3f5877d) from 2015-11-12.


  • Add missing credentials argument to pull method.

  • Fix config failure when or are passed as variables.

  • Include '' in the distribution.

git2r 0.11.0


  • Add punch card plot.

  • Add branch argument to clone with name of the branch to checkout.

  • Add 'force' argument to 'add' method to add ignored files.

  • The following methods can now be called without the repository argument: 'branches', 'references', 'remotes', 'tags' and 'workdir'. When these methods are called without the repository argument, the repository is searched for with 'discover_repository' in the current working directory.

  • Add name of branch to each item in branch_list.

  • Add name of tag to each item in tags list.

  • Add S4 class 'cred_env' to pass credentials in environment variables.

  • SSH transport on Windows. This requires 'LibSSH2' and 'OpenSSL'. These two libraries are downloaded from '' during configuration of the package.

  • Static linking of LibSSH2 on OSX to support redistributable binary package with SSH transport enabled. Version 1.6.0 of LibSSH2 is downloaded and built from ''.


  • Better summary output from S4 classes 'git_commit' and 'git_repository'.

  • Updated libgit2 source code to commit (98f7bd2) from 2015-08-05.


  • Add imports to DESCRIPTION to fix CRAN notes.

  • Fix plot function to use the repository argument 'x'

  • Update configuration to build on OpenBSD.

  • Fix checkout branch in empty repository.

  • Fix path argument in rm_file.

  • Internal refactoring of C code that raise error to prevent segfault.

git2r 0.10.1


  • Rename 'bundle_repo' method to 'bundle_r_package'

git2r 0.10.0


  • Added method libgit2_sha that returns the commit id of the libgit2 library that the bundled source code is based on.

  • Added the method in_repository to determine if a directory is in a git repository.


  • Add brief summary of the five latest commits when summarizing a git_respository.

  • Added argument 'n' to the commits method to limit the number of commits in the output.

  • Added the following methods with missing repository signature; commits, is_shallow, is_empty, is_detached, repository and status. Internally, these methods use getwd and discover_repository to open a repository.

  • Changed configuration to raise error if the OpenSSL library is not found on non-Windows systems.

  • Changed configuration to raise error if the iconv library is not found on OSX.

  • Removed print of the configuration in the config method. Changed to return S3 class git_config.

  • Removed print of the status in the status method. Changed to return S3 class git_status.


  • Use OPENSSL_INCLUDES variable to build on Solaris.

  • Use bundled regex library on Solaris.

git2 0.9


  • Single quote 'libgit2' and 'Git' in Description field

git2 0.8


  • Added bare argument to clone method to create a bare repository

  • Added force argument to push to force local revision to the remote repo

  • Updated libgit2 source code (2a0f67f)

  • Internal refactoring of push


  • Added method rm_file to remove files

  • Added 'all' argument to commit method to stage modified and deleted files

  • Added shortcut to checkout previous branch with "-" which is synonymous with "@{-1}"

  • Added session argument to commit method to add sessionInfo to commit message

  • Added session argument to tag method to add sessionInfo to tag message

  • Added method to coerce POSIXlt to S4 class git_time

  • Added method 'revparse_single' to find object specified by revision

  • Added plot method

git2 0.7


  • Update libgit2 source code to commit (366e53d)

  • Fix configuration of compiler options when the OpenSSL library is found on non-Windows platforms

git2r 0.6


  • Update Title and Description field in DESCRIPTION file.

git2r 0.5


  • Update libgit2 source code to commit (a291790)

  • Use Alice and Bob as placeholder names in examples.

  • Add COPYRIGHTS file to list all copyright holders.

  • Fix significant compiler warnings from R CMD check with pedantic flag.

git2r 0.4


  • Fix build on Windows

git2r 0.3


  • Internal refactoring of merge method and merge tests.

  • Update libgit2 source code to version v0.22.0


  • Fix build on OSX.

git2r 0.2


  • Add method 'odb_objects' to list all objects available in the database as a data.frame

  • Add method 'odb_blobs' to list all blobs reachable from the commits in the object database.


  • Added examples to all exported methods.


  • Removed ggplot2 dependency. Moved plot functionality to the ggit package (

  • Renamed note_list method to notes

  • Removed markdown_link method

  • Renamed diff and merge arguments


  • Better performance when summarizing contributions.

  • Improved build of package.


  • Fixed memory leaks.

  • Fixed use of allocVector without protection.

  • Added unload hook to unload DLL.

  • Fix tree and blob tests to use writeChar instead of writeLines to have more control over line endings.

git2r 0.1


  • Many new features and methods added, see the documention for a description of the methods below:

    • Blob: content, blob_create, hash, hashfile, is_binary, is_blob, length, show, summary.
    • Branch: branch_create, branch_delete, branch_get_upstream, branch_remote_name, branch_remote_url, branch_rename, branch_set_upstream and branch_target.
    • Commit: is_commit and parents.
    • Diff: diff and diff_print.
    • Fetch: fetch and fetch_heads.
    • Libgit2: libgit2_features and libgit2_version.
    • Merge: merge.
    • Note: note_create, note_default_ref, note_list and note_remove.
    • Pull: pull.
    • Push: push.
    • Remote: remote_add, remote_remove, remote_rename and remote_url.
    • Repository: discover_repository and is_shallow
    • Reset: reset.
    • Stash: stash, stash_drop, stash_list, show and summary.
  • Improved error messages to give more detailed information including which function raised the error.


  • The following new S4 classes to handle the libgit2 data structures:
    • cred_ssh_key
    • cred_user_pass
    • git_blame
    • git_blame_hunk
    • git_blob
    • git_diff
    • git_diff_file
    • git_diff_hunk
    • git_diff_line
    • git_fetch_head
    • git_merge_result
    • git_note
    • git_reflog_entry
    • git_stash
    • git_transfer_progress
    • git_tree


  • Renamed methods:

    • is.bare to is_bare
    • is.empty to is_empty
    • is.head to is_head
    • is.local to is_local
  • Rename hex to sha for the 40-character SHA-1 hash in method arguments and S4 class slots.

git2r 0.0.8


  • Added method to clone repository

  • Added method config to set and in a repository

  • Added method status to display state of a repository

git2r 0.0.7


  • Added method to create a commit


  • Improved error checking

git2r 0.0.6


  • Added method init to create a new Git repository


  • Removed usage of testthat package when testing the package

  • Removed bundled zlib in src/zlib and instead link against zlib shipped with R.

  • Dropped usage of external pointers, S4 git_repository now keeps track of the path of the repository.

git2r 0.0.5


  • Renamed S4 class repository to git_repository


  • Added method commits to list all commits in repository

  • Added S4 class git_commit to hold infformation of a commit

  • Added S4 class git_time to hold time of an action

  • Added slot walker to S4 class git_repository

git2r 0.0.4


  • Added method remote_url to get the url a remote in a repository

  • Added method workdir to get workdir of a repository

  • Added method remotes to list remotes of a repository

  • Added S4 class git_signature to hold information of an action signature (e.g. for committers, taggers, etc)


  • Renamed S4 class tag to git_tag

  • Renamed S4 class branch to git_branch

  • Renamed S4 class reference to git_reference

git2r 0.0.3


  • Added method branches to list branches

  • Added method head to retrieve head

  • Added method is.head to check if a branch is head

  • Added method is.local to check if a branch is local

  • Added S4 class branch to hold information of a git branch

  • Added method to show a reference

  • Added method to list all references in a repository

  • Added S4 class reference to hold information of a git reference

git2r 0.0.2


  • Added is.bare method to check if a repository is bare

  • Added is.empty method to check if a repository is empty

git2r 0.0.1


  • Added S4 class repository to work with a git repository

  • Initial package structure

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.21.0 by Stefan Widgren, 2 months ago

Report a bug at

Browse source code at

Authors: See AUTHORS file.

Documentation:   PDF Manual  

Task views: Web Technologies and Services

GPL-2 license

Imports graphics, utils

Depends on methods

Suggests getPass

System requirements: zlib headers and library. OpenSSL headers and library. LibSSH2 (optional on non-Windows) to enable the SSH transport.

Imported by BioInstaller, adapr, archivist.github, codemetar, devtools, excerptr, ghit, kirby21.base, phuse, reproducible, spm12r, usethis.

Suggested by Rcereal, drat, envDocument, gistr, nat.templatebrains, remotes.

See at CRAN