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_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_add(files, force = FALSE, repo = ".")

git_rm(files, repo = ".")

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

git_conflicts(repo = ".")

git_ls(repo = ".")

git_log(ref = "HEAD", max = 100, 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().

ref

revision string with a branch/tag/commit value

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).

max

lookup at most latest n parent commits

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

See also

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", "[email protected]") } writeLines(letters[1:6], "alphabet.txt") git_status()
#> # A tibble: 1 x 3 #> file status staged #> <chr> <chr> <lgl> #> 1 alphabet.txt new FALSE
git_add("alphabet.txt")
#> # A tibble: 1 x 3 #> file status staged #> <chr> <chr> <lgl> #> 1 alphabet.txt new TRUE
git_status()
#> # A tibble: 1 x 3 #> file status staged #> <chr> <chr> <lgl> #> 1 alphabet.txt new TRUE
git_commit("Start alphabet file")
#> [1] "31ebfdadd4274a56d222401ec2ccf568d04d427a"
git_status()
#> # A tibble: 0 x 3 #> # … with 3 variables: file <chr>, status <chr>, staged <lgl>
git_ls()
#> # A tibble: 1 x 4 #> path filesize modified created #> * <chr> <dbl> <dttm> <dttm> #> 1 alphabet.txt 12 2020-09-14 19:04:17 2020-09-14 19:04:17
git_log()
#> # A tibble: 1 x 6 #> commit author time files merge message #> * <chr> <chr> <dttm> <int> <lgl> <chr> #> 1 31ebfdadd4274a56d… Jerry Johnson… 2020-09-14 19:04:18 1 FALSE "Start alph…
cat(letters[7:9], file = "alphabet.txt", sep = "\n", append = TRUE) git_status()
#> # A tibble: 1 x 3 #> file status staged #> <chr> <chr> <lgl> #> 1 alphabet.txt modified FALSE
git_commit_all("Add more letters")
#> [1] "e54ab0b784ee2505a49528c4ac4355960ba676f2"
# cleanup setwd(oldwd) unlink(repo, recursive = TRUE)