> ## Documentation Index
> Fetch the complete documentation index at: https://docs.domino.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Git-based Projects

> How Git-based Projects organize code, data, and artifacts, and how to branch, sync, and resolve conflicts in Domino.

## Overview

Git-based Projects store code at your Git provider. Git workflows (branch, commit, push, pull) work natively in your Workspace, and you keep your provider's collaboration features: pull requests, branch protection, CI. Choose them if you have at least beginner Git proficiency, experience with hosted version control like GitHub or Bitbucket, or several collaborators on a Project. If Git is unfamiliar, consider a [DFS Project](/cloud/platform-capabilities/core-concepts/projects/dfs-projects) instead.

<Note>
  Domino does not support Git Large File Storage (LFS). Before using a private repository, [add Git credentials](/cloud/platform-capabilities/core-concepts/projects/create-projects#add-git-credentials) to your Domino account; public repositories don't need credentials.
</Note>

## How it works

A Git-based Project separates its assets into **Code**, **Data**, and **Artifacts**, each with its own section in the Project navigation pane:

* **Code** lists the Git repositories that hold your Project code and any imported repositories. You can browse folders, select any branch, and see the last 10 commits directly from the **Code** section (large repositories can take up to 30 seconds to load initially). The default working directory is `/mnt/code`.
* **Data** lists the Project's [Domino Datasets](/cloud/platform-capabilities/core-concepts/data/datasets/create-and-manage-datasets), external data volumes, and Dataset scratch spaces.
* **Artifacts** holds results like plots, charts, and serialized models. Artifacts live in the Domino File System (DFS), not in your Git repository.

If the Project owner sets a default Git branch in [Project settings](/cloud/platform-capabilities/core-concepts/projects/project-settings), it auto-fills across the Project and can be changed anytime.

In a Workspace or Job, the assets mount under this directory structure:

```console theme={null}
/mnt
├── /code                           # Git repository and default working directory
├── /data                           # Project Datasets
│   └── /{dataset-name}             # Latest version of dataset
├── /artifacts                      # Project Artifacts
├── /{external-volume-name}         # External mounted volumes
└── /imported                       # Imported Git Repos
    ├── /code
    │   └── /{imported-repo-name}
    ├── /data                       # Mounted Shared Datasets
    │   └── /{shared-dataset-name}  # Contains contents of latest snapshot unless otherwise specified by yaml
    └── /artifacts                  # Imported Project Artifacts
        └── /{imported-project-name}
```

Git does not support committing empty directories, so a directory with no files disappears from the repository. See [Dataset paths in Git-based Projects](/cloud/platform-capabilities/core-concepts/data/datasets/use-datasets-and-snapshots#dataset-paths-in-git-based-projects) for how Dataset mounts resolve.

<Warning>
  When a Job runs in a Git-based Project, Domino automatically syncs only the artifacts to the DFS. Code is never auto-committed: you must sync it or push it to the Git repository yourself. This is intentional and supports the code, data, and artifacts workflow.
</Warning>

## Change branches

Select a branch from the menu in your Workspace. The menu lists up to 10 local branches followed by remote branches, alphabetically; search to find more. Branches deleted at the provider keep appearing in the menu until you [sync](/cloud/platform-capabilities/core-concepts/workspaces/sync-changes-in-a-workspace) or pull your latest changes.

## Pull changes

When you pull the latest changes from the remote, Domino fetches the remote branch's content (`git fetch`), then applies your changes on top (`git rebase`). If files conflict, resolve them manually or choose **Use Remote Changes**, which discards your Workspace changes and overwrites the files with the remote versions.

## Resolve merge conflicts

Merge conflicts happen when two changes touch the same line, when one person edits a file another deleted, or when you push multiple commits. When a sync hits a conflict, the **File Conflicts** window opens with a guided resolution flow that covers both the main code repository and any imported repositories. Select **Resolve Manually** to work through the conflicts file by file, with three options per file:

* **Mark as resolved**: you've edited the file to remove the conflict markers. The file is listed under **Uncommitted changes** and pushes to the remote when you click **Continue sync**.
* **Use my changes**: overwrites the remote file with your Workspace version. Also listed under **Uncommitted changes** and pushed on **Continue sync**.
* **Use origin repo changes**: discards your Workspace changes and takes the remote file. Nothing is left to commit, but you still must click **Continue sync** to finish.

If you made multiple commits, the latest commit might overwrite changes you made during conflict resolution.

## Save and pull artifacts

Artifacts sync with the DFS, separately from your Git repository:

* To save: in your Workspace, click **File Changes**, expand **File Changes** under **Artifacts**, enter a commit message, and click **Sync to Domino**.
* To pull the latest artifacts into your Workspace: click **File Changes**, then click **Pull** under **Artifacts**.

<Warning>
  Everything in **Artifacts** is saved exclusively to the DFS. If an asset shouldn't live in the DFS, don't save it as an artifact. See [Sync changes in a Workspace](/cloud/platform-capabilities/core-concepts/workspaces/sync-changes-in-a-workspace).
</Warning>

## Related

* [Create Projects](/cloud/platform-capabilities/core-concepts/projects/create-projects): create a Git-based Project and set up credentials.
* [Manage Projects](/cloud/platform-capabilities/core-concepts/projects/manage-projects): deep and reference copies of Git-based Projects.
* [Use Git in your Workspace](/cloud/platform-capabilities/core-concepts/workspaces/use-git-in-your-workspace): day-to-day Git operations during a session.
