Main class for a new Git handler instance.
Constructors
Section titled “Constructors”new Git()
Section titled “new Git()”def initialize(sandbox_id:, toolbox_api:, otel_state: nil)Initializes a new Git handler instance.
Parameters:
sandbox_idString - The Sandbox ID.toolbox_apiDaytonaToolboxApiClient:GitApi - API client for Sandbox operations.otel_stateDaytona:OtelState, nil -
Returns:
Git- a new instance of Git
Methods
Section titled “Methods”sandbox_id()
Section titled “sandbox_id()”def sandbox_id()Returns:
String- The Sandbox ID
toolbox_api()
Section titled “toolbox_api()”def toolbox_api()Returns:
DaytonaToolboxApiClient:GitApi- API client for Sandbox operations
def add(path, files)Stages the specified files for the next commit, similar to running ‘git add’ on the command line.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.filesArray<String> - List of file paths or directories to stage, relative to the repository root.
Returns:
void
Raises:
Daytona:Sdk:Error- if adding files fails
Examples:
# Stage a single filesandbox.git.add("workspace/repo", ["file.txt"])
# Stage multiple filessandbox.git.add("workspace/repo", [ "src/main.rb", "spec/main_spec.rb", "README.md"])branches()
Section titled “branches()”def branches(path)Lists branches in the repository.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.
Returns:
DaytonaApiClient:ListBranchResponse- List of branches in the repository.
Raises:
Daytona:Sdk:Error- if listing branches fails
Examples:
response = sandbox.git.branches("workspace/repo")puts "Branches: #{response.branches}"clone()
Section titled “clone()”def clone(url:, path:, branch: nil, commit_id: nil, username: nil, password: nil, insecure_skip_tls: nil, depth: nil)Clones a Git repository into the specified path. It supports cloning specific branches or commits, and can authenticate with the remote repository if credentials are provided.
Parameters:
urlString - Repository URL to clone from.pathString - Path where the repository should be cloned. Relative paths are resolved based on the sandbox working directory.branchString, nil - Specific branch to clone. If not specified, clones the default branch.commit_idString, nil - Specific commit to clone. If specified, the repository will be left in a detached HEAD state at this commit.usernameString, nil - Git username for authentication.passwordString, nil - Git password or token for authentication.insecure_skip_tlsBoolean, nil - Skip TLS certificate verification (insecure). Use only for trusted internal Git servers with self-signed or private-CA certs; credentials, if supplied, are transmitted over an unverified TLS connection.depthInteger, nil - Create a shallow clone truncated to the given number of commits.
Returns:
void
Raises:
Daytona:Sdk:Error- if cloning repository fails
Examples:
# Clone the default branchsandbox.git.clone( url: "https://github.com/user/repo.git", path: "workspace/repo")
# Clone a specific branch with authenticationsandbox.git.clone( url: "https://github.com/user/private-repo.git", path: "workspace/private", branch: "develop", username: "user", password: "token")
# Clone a specific commitsandbox.git.clone( url: "https://github.com/user/repo.git", path: "workspace/repo-old", commit_id: "abc123")commit()
Section titled “commit()”def commit(path:, message:, author:, email:, allow_empty: false)Creates a new commit with the staged changes. Make sure to stage changes using the add() method before committing.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.messageString - Commit message describing the changes.authorString - Name of the commit author.emailString - Email address of the commit author.allow_emptyBoolean - Allow creating an empty commit when no changes are staged. Defaults to false.
Returns:
GitCommitResponse- Response containing the commit SHA.
Raises:
Daytona:Sdk:Error- if committing changes fails
Examples:
# Stage and commit changessandbox.git.add("workspace/repo", ["README.md"])commit_response = sandbox.git.commit( path: "workspace/repo", message: "Update documentation", author: "John Doe", email: "john@example.com", allow_empty: true)puts "Commit SHA: #{commit_response.sha}"push()
Section titled “push()”def push(path:, username: nil, password: nil, branch: nil, remote: nil, set_upstream: false)Pushes all local commits on the current branch to the remote repository. If the remote repository requires authentication, provide username and password/token.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.usernameString, nil - Git username for authentication.passwordString, nil - Git password or token for authentication.branchString, nil - Branch to push. Defaults to the current branch.remoteString, nil - Remote to push to. Defaults to “origin”.set_upstreamBoolean - Record the pushed branch as the upstream tracking branch. Defaults to false.
Returns:
void
Raises:
Daytona:Sdk:Error- if pushing changes fails
Examples:
# Push without authentication (for public repos or SSH)sandbox.git.push("workspace/repo")
# Push with authenticationsandbox.git.push( path: "workspace/repo", username: "user", password: "github_token")
# Push a new branch and set its upstreamsandbox.git.push(path: "workspace/repo", branch: "feature", set_upstream: true)pull()
Section titled “pull()”def pull(path:, username: nil, password: nil, branch: nil, remote: nil)Pulls changes from the remote repository. If the remote repository requires authentication, provide username and password/token.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.usernameString, nil - Git username for authentication.passwordString, nil - Git password or token for authentication.branchString, nil - Branch to pull. Defaults to the current branch’s upstream.remoteString, nil - Remote to pull from. Defaults to “origin”.
Returns:
void
Raises:
Daytona:Sdk:Error- if pulling changes fails
Examples:
# Pull without authenticationsandbox.git.pull("workspace/repo")
# Pull with authenticationsandbox.git.pull( path: "workspace/repo", username: "user", password: "github_token")
# Pull a specific branch from a specific remotesandbox.git.pull(path: "workspace/repo", remote: "upstream", branch: "main")status()
Section titled “status()”def status(path)Gets the current Git repository status.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.
Returns:
DaytonaToolboxApiClient:GitStatus- Repository status information including:
Raises:
Daytona:Sdk:Error- if getting status fails
Examples:
status = sandbox.git.status("workspace/repo")puts "On branch: #{status.current_branch}"puts "Commits ahead: #{status.ahead}"puts "Commits behind: #{status.behind}"checkout_branch()
Section titled “checkout_branch()”def checkout_branch(path, branch)Checkout branch in the repository.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.branchString - Name of the branch to checkout
Returns:
void
Raises:
Daytona:Sdk:Error- if checking out branch fails
Examples:
# Checkout a branchsandbox.git.checkout_branch("workspace/repo", "feature-branch")create_branch()
Section titled “create_branch()”def create_branch(path, name)Create branch in the repository.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.nameString - Name of the new branch to create
Returns:
void
Raises:
Daytona:Sdk:Error- if creating branch fails
Examples:
# Create a new branchsandbox.git.create_branch("workspace/repo", "new-feature")delete_branch()
Section titled “delete_branch()”def delete_branch(path, name)Delete branch in the repository.
Parameters:
pathString - Path to the Git repository root. Relative paths are resolved based on the sandbox working directory.nameString - Name of the branch to delete
Returns:
void
Raises:
Daytona:Sdk:Error- if deleting branch fails
Examples:
# Delete a branchsandbox.git.delete_branch("workspace/repo", "old-feature")init()
Section titled “init()”def init(path, bare: false, initial_branch: nil)Initializes a new Git repository at the specified path.
Parameters:
pathString - Path where the repository should be initialized.bareBoolean - Create a bare repository without a working tree. Defaults to false.initial_branchString, nil - Name of the initial branch. If not specified, uses the Git default.
Returns:
void
Raises:
Daytona:Sdk:Error- if initializing repository fails
Examples:
sandbox.git.init("workspace/repo", initial_branch: "main")reset()
Section titled “reset()”def reset(path, mode: nil, target: nil, files: nil)Resets the current HEAD to the specified state.
Parameters:
pathString - Path to the Git repository root.modeString, nil - Reset mode, one of “soft”, “mixed” (default), “hard”, “merge” or “keep”.targetString, nil - Revision to reset to. Defaults to HEAD.filesArray<String>, nil - Constrain the reset to the given paths.
Returns:
void
Raises:
Daytona:Sdk:Error- if resetting fails
Examples:
# Unstage all changes (mixed reset to HEAD)sandbox.git.reset("workspace/repo")
# Hard reset to a previous commitsandbox.git.reset("workspace/repo", mode: "hard", target: "HEAD~1")restore()
Section titled “restore()”def restore(path, files, staged: nil, worktree: nil, source: nil)Restores working tree files or unstages changes.
Parameters:
pathString - Path to the Git repository root.filesArray<String> - File paths to restore.stagedBoolean, nil - Restore the staging index for the given files.worktreeBoolean, nil - Restore the working tree for the given files. Defaults to true when neither staged nor worktree is provided.sourceString, nil - Restore file contents from the given revision instead of the index.
Returns:
void
Raises:
Daytona:Sdk:Error- if restoring fails
Examples:
# Discard working tree changessandbox.git.restore("workspace/repo", ["file.txt"])
# Unstage changessandbox.git.restore("workspace/repo", ["file.txt"], staged: true)remote_add()
Section titled “remote_add()”def remote_add(path, name, url, fetch: false, overwrite: false)Adds (or overwrites) a remote in the repository.
Parameters:
pathString - Path to the Git repository root.nameString - Name of the remote.urlString - URL of the remote.fetchBoolean - Fetch from the remote immediately after adding it. Defaults to false.overwriteBoolean - Replace an existing remote with the same name. Defaults to false.
Returns:
void
Raises:
Daytona:Sdk:Error- if adding the remote fails
Examples:
sandbox.git.remote_add("workspace/repo", "origin", "https://github.com/user/repo.git")remotes()
Section titled “remotes()”def remotes(path)Lists the remotes configured in the repository.
Parameters:
pathString - Path to the Git repository root.
Returns:
DaytonaToolboxApiClient:ListRemotesResponse- The configured remotes (name + URL).
Raises:
Daytona:Sdk:Error- if listing remotes fails
Examples:
response = sandbox.git.remotes("workspace/repo")response.remotes.each { |r| puts "#{r.name}: #{r.url}" }remote_get()
Section titled “remote_get()”def remote_get(path, name)Gets the URL of a remote, or nil when it does not exist.
Parameters:
pathString - Path to the Git repository root.nameString - Name of the remote.
Returns:
String, nil- The remote URL, or nil when the remote does not exist.
Raises:
Daytona:Sdk:Error- if getting the remote fails
Examples:
url = sandbox.git.remote_get("workspace/repo", "origin")set_config()
Section titled “set_config()”def set_config(key, value, scope: 'global', path: nil)Sets a Git config value at the given scope.
Parameters:
keyString - Config key in dotted form (e.g. “user.name”).valueString - Config value.scopeString - Config scope, one of “global” (default), “local” or “system”.pathString, nil - Repository path, required when scope is “local”.
Returns:
void
Raises:
Daytona:Sdk:Error- if setting config fails
Examples:
sandbox.git.set_config("user.name", "John Doe")get_config()
Section titled “get_config()”def get_config(key, scope: 'global', path: nil)Gets a Git config value at the given scope, or nil when unset.
Parameters:
keyString - Config key in dotted form (e.g. “user.name”).scopeString - Config scope, one of “global” (default), “local” or “system”.pathString, nil - Repository path, required when scope is “local”.
Returns:
String, nil- The config value, or nil when the key is not set.
Raises:
Daytona:Sdk:Error- if getting config fails
Examples:
name = sandbox.git.get_config("user.name")configure_user()
Section titled “configure_user()”def configure_user(name, email, scope: 'global', path: nil)Configures the Git user name and email at the given scope.
Parameters:
nameString - User name (user.name).emailString - User email (user.email).scopeString - Config scope, one of “global” (default), “local” or “system”.pathString, nil - Repository path, required when scope is “local”.
Returns:
void
Raises:
Daytona:Sdk:Error- if configuring user fails
Examples:
sandbox.git.configure_user("John Doe", "john@example.com")dangerously_authenticate()
Section titled “dangerously_authenticate()”def dangerously_authenticate(username, password, host: nil, protocol: nil)Persists Git credentials globally so that subsequent operations against the given host authenticate automatically.
WARNING: This stores the password in plaintext on disk via the Git credential store.
Parameters:
usernameString - Git username.passwordString - Git password or token.hostString, nil - Host to authenticate against. Defaults to “github.com”.protocolString, nil - Protocol to authenticate against. Defaults to “https”.
Returns:
void
Raises:
Daytona:Sdk:Error- if authenticating fails
Examples:
sandbox.git.dangerously_authenticate("user", "github_token")