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
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
orNA
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 filegit_log()
: A data frame with one row per commitgit_commit()
,git_commit_all()
: A SHA
See also
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
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] "cb0041bcfb1547eb49df578ae85e4075c4b808f5"
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-12-02 06:28:35 2024-12-02 06:28:35
git_log()
#> # A tibble: 1 × 6
#> commit author time files merge message
#> * <chr> <chr> <dttm> <int> <lgl> <chr>
#> 1 cb0041bcfb1547eb49df578ae85e40… Jerry… 2024-12-02 06:28:36 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] "50d860536e5d4b57f047d6c308702cda1ca5af2d"
# cleanup
setwd(oldwd)
unlink(repo, recursive = TRUE)