checkout {git2r} | R Documentation

## Checkout

### Description

Update files in the index and working tree to match the content of the tree pointed at by the treeish object (commit, tag or tree). Checkout using the default GIT_CHECKOUT_SAFE_CREATE strategy (force = FALSE) or GIT_CHECKOUT_FORCE (force = TRUE).

### Usage

    checkout(object, ...)

    ## S4 method for signature 'git_repository'
    checkout(object, branch = NULL, create = FALSE,
      force = FALSE, path = NULL, ...)

    ## S4 method for signature 'git_branch'
    checkout(object, force = FALSE)

    ## S4 method for signature 'git_commit'
    checkout(object, force = FALSE)

    ## S4 method for signature 'git_tag'
    checkout(object, force = FALSE)

### Arguments

`object` | A repository, commit, tag or tree which content will be used to update the working directory.
`...` | Additional arguments affecting the checkout
`branch` | If object is a repository, the name of the branch to check out. Default is NULL.
`create` | If object is a repository, then branch is created if doesn't exist.
`force` | If TRUE, then make working directory match target. This will throw away local changes. Default is FALSE.
`path` | Limit the checkout operation to only certain paths. This argument is only used if branch is NULL. Default is NULL.

### Value

invisible NULL

### Examples

    ## Not run:
    ## Create directories and initialize repositories
    path_bare <- tempfile(pattern="git2r-")
    path_repo_1 <- tempfile(pattern="git2r-")
    path_repo_2 <- tempfile(pattern="git2r-")
    dir.create(path_bare)
    dir.create(path_repo_1)
    dir.create(path_repo_2)
    repo_bare <- init(path_bare, bare = TRUE)

    ## Clone to repo 1 and config user
    repo_1 <- clone(path_bare, path_repo_1)
    config(repo_1, user.name="Alice", user.email="alice@example.org")

    ## Add changes to repo 1 and push to bare
    writeLines("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do",
               con = file.path(path_repo_1, "test.txt"))
    add(repo_1, "test.txt")
    commit(repo_1, "First commit message")
    push(repo_1, "origin", "refs/heads/master")

    ## Create and checkout 'dev' branch in repo 1
    checkout(repo_1, "dev", create = TRUE)

    ## Add changes to 'dev' branch in repo 1 and push to bare
    writeLines(c("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do",
                 "eiusmod tempor incididunt ut labore et dolore magna aliqua."),
               con = file.path(path_repo_1, "test.txt"))
    add(repo_1, "test.txt")
    commit(repo_1, "Second commit message")
    push(repo_1, "origin", "refs/heads/dev")

    ## Clone to repo 2
    repo_2 <- clone(path_bare, path_repo_2)
    config(repo_2, user.name="Bob", user.email="bob@example.org")

    ## Read content of 'test.txt'
    readLines(file.path(path_repo_2, "test.txt"))

    ## Checkout dev branch
    checkout(repo_2, "dev")

    ## Read content of 'test.txt'
    readLines(file.path(path_repo_2, "test.txt"))

    ## Edit "test.txt" in repo_2
    writeLines("Hello world!", con = file.path(path_repo_2, "test.txt"))

    ## Check status
    status(repo_2)

    ## Checkout "test.txt"
    checkout(repo_2, path = "test.txt")

    ## Check status
    status(repo_2)

    ## End(Not run)

[Package git2r version 0.20.0 Index]