Skip to content

Git Operations

Every thread is a full git clone on its own branch. Tarsk provides a built-in Git Ops panel so you can commit, push, and fetch without leaving the app.

The branch button in the chat toolbar shows the current git branch name (e.g. add-login-page). Click it to switch branches, create a new branch, or rename the current one.

Your git username appears in the Git Ops dropdown menu under User.

The Git Ops control in the chat toolbar is a split button. The main button label changes with git state (Commit, Create PR, etc.). The chevron opens a dropdown with additional actions.

Thread status dots appear in the sidebar next to each thread name:

  • Brand dot — uncommitted local changes
  • Orange dot — an open pull request exists (or needs updating)
  • No dot — clean working tree, no active PR indicator

The primary button adapts to your branch state:

LabelWhen it appears
CommitUncommitted changes exist
Create PRCommitted and pushed, no open PR yet
Merge PRAn open pull request exists and is ready to merge
OperationDescription
Sync with {branch}Rebase your branch onto the latest default branch
Quick CommitGenerate an AI commit message and commit in one step (Cmd+Shift+C)
FetchDownload remote updates without merging
PullPull latest changes from the remote branch
Push Branch to RemoteCreate the remote branch and push (when no remote branch exists)
Push CommitsPush unpushed commits to the remote branch
HistoryView the commit log for this branch
Create Pull RequestOpen the PR creation dialog (Cmd+Shift+P)
Create RepoCreate a new GitHub repository from this thread
View in GitHubOpen the repository on GitHub (Cmd+Shift+G)

Use the Review tab to view diffs and revert individual files. Checkpoints are created automatically before agent runs and restored from the chat message header — not from this menu.


  1. Click Commit on the Git Ops button (or Quick Commit in the dropdown).
  2. The commit dialog shows the number of changed files.
  3. Enter a commit message, or click Generate to have the AI write a conventional commit message based on the diff.
  4. Click Commit.

All modified and new files are staged automatically (git add -A) before committing.

The Generate button sends the current diff to the AI model and returns a commit message following the conventional commits format (e.g. feat(auth): add JWT refresh token endpoint). You can edit the generated message before committing.


  1. Click Push Commits or Push Branch to Remote in the Git Ops dropdown.
  2. Tarsk runs git push -u origin <branch> to push the branch and set the upstream tracking reference.
  3. A success message confirms the push.

If the push fails because the remote has commits you don’t have locally (non-fast-forward), run Fetch first, then resolve any conflicts before pushing again.


Click Fetch in the Git Ops dropdown to run git fetch origin. This updates your local knowledge of what’s on the remote without modifying your working tree or current branch. Use this to check whether the remote has new commits before pushing.


If the thread doesn’t have a remote origin yet (e.g. you scaffolded a new app), you can create a GitHub repository directly:

  1. Click Create Repo in the Git Ops dropdown.
  2. Enter the repository name and visibility (public/private).
  3. Click Create.

Tarsk runs gh repo create --source . --push, which creates the repository on GitHub, sets it as the remote origin, and pushes the current branch.


Click History in the Git Ops dropdown to open a log of commits on this branch, showing:

  • Commit hash (short)
  • Commit message
  • Author name
  • Date

This is useful for reviewing what the agent has committed across a long work session, or for finding a previous state you want to return to.


Click Sync with {branch} in the Git Ops dropdown to pull the latest changes from the default branch (usually main or master) into your thread’s branch using rebase. This keeps your feature branch up-to-date with the latest work on the default branch without creating a merge commit.

Sync Branch automatically:

  1. Pushes any unpushed commits on your thread’s branch first (if the branch has diverged)
  2. Runs git pull --rebase origin <default-branch> to replay your commits on top of the latest default branch

If rebase conflicts occur, you will need to resolve them manually. Open the thread directory in your IDE to handle conflicts, then continue the rebase.


If the agent made changes to a file that you want to undo, you can revert just that file without affecting other changes:

  1. Open the Review tab.
  2. Find the file you want to revert.
  3. Click the Revert button on that file’s diff.

Tarsk restores the file to its last committed state (HEAD). For untracked or newly staged files, the file is deleted from disk entirely.


A checkpoint is a snapshot of the working tree before an agent run. Tarsk creates one automatically before the agent starts making changes (using git stash internally). Checkpoints capture both tracked and untracked changes without committing them.

If the agent’s changes are unsatisfactory, restore the state from before that message:

  1. Find the user message in the chat that triggered the run.
  2. Click Restore checkpoint on that message.
  3. Confirm in the dialog. Tarsk discards all working tree changes since that checkpoint and truncates the conversation back to that point.

This is destructive — all uncommitted changes and conversation messages since the checkpoint are lost. The conversation history is reloaded from the database after truncation.


ActionShortcut
Open Git Ops menuCmd+Shift+B
Quick CommitCmd+Shift+C
Create Pull RequestCmd+Shift+P
View in GitHubCmd+Shift+G

Quick Commit only appears when uncommitted changes exist and auto-generate commit messages is enabled. Create Pull Request requires commits ahead of the default branch with no open PR.


Whether changes are committed directly to the branch or converted into a pull request is controlled by the project’s Commit Method setting:

  • direct — commits and pushes to the thread’s branch; you handle PRs manually
  • pull-request — after committing and pushing, automatically creates a GitHub pull request (see Review & Pull Requests)

Change this in Project Settings.