Skip to main content

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 instead.
Domino does not support Git Large File Storage (LFS). Before using a private repository, add Git credentials to your Domino account; public repositories don’t need credentials.

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, 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, it auto-fills across the Project and can be changed anytime. In a Workspace or Job, the assets mount under this directory structure:
/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 for how Dataset mounts resolve.
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.

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 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.
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.