Skip to contents

To commit changes, start by staging the files to be included in the commit using git_add() or git_rm(). Use git_status() to see an overview of staged and unstaged changes, and finally git_commit() creates a new commit with currently staged files.

git_commit_all() is a convenience function that automatically stages and commits all modified files. Note that git_commit_all() does not add new, untracked files to the repository. You need to make an explicit call to git_add() to start tracking new files.

git_log() shows the most recent commits and git_ls() lists all the files that are being tracked in the repository. git_stat_files()

Usage

git_commit(message, author = NULL, committer = NULL, repo = ".")

git_commit_all(message, author = NULL, committer = NULL, repo = ".")

git_commit_info(ref = "HEAD", repo = ".")

git_commit_id(ref = "HEAD", repo = ".")

git_commit_stats(ref = "HEAD", repo = ".")

git_commit_descendant_of(ancestor, ref = "HEAD", repo = ".")

git_add(files, force = FALSE, repo = ".")

git_rm(files, repo = ".")

git_status(staged = NULL, pathspec = NULL, repo = ".")

git_conflicts(repo = ".")

git_ls(repo = ".", ref = NULL)

git_log(ref = "HEAD", max = 100, after = NULL, repo = ".")

git_stat_files(files, ref = "HEAD", repo = ".")

Arguments

message

a commit message

author

A git_signature value, default is git_signature_default().

committer

A git_signature value, default is same as author

repo

The path to the git repository. If the directory is not a repository, parent directories are considered (see git_find). To disable this search, provide the filepath protected with I(). When using this parameter, always explicitly call by name (i.e. repo = ) because future versions of gert may have additional parameters.

ref

revision string with a branch/tag/commit value

ancestor

a reference to a potential ancestor commit

files

vector of paths relative to the git root directory. Use "." to stage all changed files.

force

add files even if in gitignore

staged

return only staged (TRUE) or unstaged files (FALSE). Use NULL or NA to show both (default).

pathspec

character vector with paths to match

max

lookup at most latest n parent commits

after

date or timestamp: only include commits starting this date

Value

  • git_status(), git_ls(): A data frame with one row per file

  • git_log(): A data frame with one row per commit

  • git_commit(), git_commit_all(): A SHA

Examples

oldwd <- getwd()
repo <- file.path(tempdir(), "myrepo")
git_init(repo)
setwd(repo)

# Set a user if no default
if(!user_is_configured()){
  git_config_set("user.name", "Jerry")
  git_config_set("user.email", "jerry@gmail.com")
}

writeLines(letters[1:6], "alphabet.txt")
git_status()
#> # A tibble: 1 × 3
#>   file         status staged
#>   <chr>        <chr>  <lgl> 
#> 1 alphabet.txt new    FALSE 

git_add("alphabet.txt")
#> # A tibble: 1 × 3
#>   file         status staged
#>   <chr>        <chr>  <lgl> 
#> 1 alphabet.txt new    TRUE  
git_status()
#> # A tibble: 1 × 3
#>   file         status staged
#>   <chr>        <chr>  <lgl> 
#> 1 alphabet.txt new    TRUE  

git_commit("Start alphabet file")
#> [1] "b4f60884b02e33593e60f6b81653e38fa677d003"
git_status()
#> # A tibble: 0 × 3
#> # ℹ 3 variables: file <chr>, status <chr>, staged <lgl>

git_ls()
#> # A tibble: 1 × 4
#>   path         filesize modified            created            
#> * <chr>           <dbl> <dttm>              <dttm>             
#> 1 alphabet.txt       12 2024-11-02 09:14:55 2024-11-02 09:14:55

git_log()
#> # A tibble: 1 × 6
#>   commit                          author time                files merge message
#> * <chr>                           <chr>  <dttm>              <int> <lgl> <chr>  
#> 1 b4f60884b02e33593e60f6b81653e3… Jerry… 2024-11-02 09:14:55     1 FALSE "Start…

cat(letters[7:9], file = "alphabet.txt", sep = "\n", append = TRUE)
git_status()
#> # A tibble: 1 × 3
#>   file         status   staged
#>   <chr>        <chr>    <lgl> 
#> 1 alphabet.txt modified FALSE 

git_commit_all("Add more letters")
#> [1] "94889d5338098cb077784c827ff69af78cce6228"

# cleanup
setwd(oldwd)
unlink(repo, recursive = TRUE)