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()
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 = ".")a commit message
A git_signature value, default is git_signature_default().
A git_signature value, default is same as author
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.
revision string with a branch/tag/commit value
a reference to a potential ancestor commit
vector of paths relative to the git root directory.
Use "." to stage all changed files.
add files even if in gitignore
return only staged (TRUE) or unstaged files (FALSE).
Use NULL or NA to show both (default).
character vector with paths to match
lookup at most latest n parent commits
date or timestamp: only include commits starting this date
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
Other git:
git_archive,
git_branch(),
git_config(),
git_diff(),
git_fetch(),
git_ignore,
git_merge(),
git_rebase(),
git_remote,
git_repo,
git_reset(),
git_signature(),
git_stash,
git_tag
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] "73e5aa01879fff2fcdfbd72c0b523e3dc57211a1"
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 2025-10-14 17:29:37 2025-10-14 17:29:37
git_log()
#> # A tibble: 1 × 6
#> commit author time files merge message
#> * <chr> <chr> <dttm> <int> <lgl> <chr>
#> 1 73e5aa01879fff2fcdfbd72c0b523e… Eliza… 2025-10-14 17:29:37 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] "7cf311fa9bcc76112669cec4c18e2e5b3fff162a"
# cleanup
setwd(oldwd)
unlink(repo, recursive = TRUE)