A JupyterLab extension that saves versioned, persistent checkpoints of notebooks on every save and lets you diff against earlier versions.
jupyterlab/jupyterlab-git
A JupyterLab extension that adds a Git panel for staging, committing, branching, and syncing repositories from within notebooks.
- Stars
- 1,613
- Forks
- 412
- Open issues
- 152
- Last commit
- 3 days ago
What is it?
jupyterlab-git is a JupyterLab extension that brings Git version control into the JupyterLab interface. It adds a Git tab to the left panel where users can view changed files, stage and commit changes, browse history, manage branches, and push or pull from remote repositories without leaving the browser environment.
The extension is split into a frontend labextension and a backend. The standard install uses a Tornado/jupyter-server backend, while the core package can also run under jupyverse using a FastAPI-based plugin. It requires JupyterLab 4.x or later and a local Git installation, with older JupyterLab 2.x and 3.x versions maintained on separate branches.
Users can configure behavior through JupyterLab's settings editor, such as whether clicking a file opens a diff, whether commands block the UI while running, and how often the file system is polled for changes. Server-side options cover credential caching for HTTP(S) remotes, a Git command timeout, and post-init actions. SSH authentication is supported through the user's existing key setup.
Key features
- 01Git panel in the JupyterLab left sidebar for viewing changes and history
- 02Stage, commit, branch, push, and pull from the browser
- 03Diff viewing for changed files with configurable click behavior
- 04Credential caching for HTTP(S) remotes and support for SSH keys
- 05Configurable settings for polling interval, history length, and concurrent command blocking
Use cases
- Tracking changes to notebooks and scripts in a data science project without using a terminal
- Committing and pushing analysis work to GitHub or GitLab directly from JupyterLab
- Reviewing diffs of notebook or code files before committing
- Teaching Git basics to students who work in JupyterLab
Quick start
- 1
Install JupyterLab and the extension with pip
pip install --upgrade jupyterlab jupyterlab-git - 2
Open the Git tab in the left panel of JupyterLab
Things to know
- The extension does not handle credentials for SSH connections, so SSH authentication must be set up separately.
- It requires JupyterLab 4.0 or later; older JupyterLab versions need the 2.x or 3.x branches.
Topics
FAQ
- What is jupyterlab-git?
- A JupyterLab extension that adds a Git panel for staging, committing, branching, and syncing repositories from within notebooks. jupyterlab-git is a JupyterLab extension that brings Git version control into the JupyterLab interface. It adds a Git tab to the left panel where users can view changed files, stage and commit changes, browse history, manage branches, and push or pull from remote repositories without leaving the browser environment.
- Is jupyterlab-git free to use? What license does it have?
- jupyterlab-git is open source under the BSD-3-Clause license. Check the license terms before using it in commercial products.
- Is jupyterlab-git still maintained?
- Actively maintained. The last commit to jupyterlab-git was on Nov 4, 2026.
- What can I use jupyterlab-git for?
- Tracking changes to notebooks and scripts in a data science project without using a terminal Committing and pushing analysis work to GitHub or GitLab directly from JupyterLab Reviewing diffs of notebook or code files before committing Teaching Git basics to students who work in JupyterLab
- How do I install jupyterlab-git?
- Install JupyterLab and the extension with pip: pip install --upgrade jupyterlab jupyterlab-git Open the Git tab in the left panel of JupyterLab
- Where can I get jupyterlab-git?
- The source code and installation instructions are on GitHub: https://github.com/jupyterlab/jupyterlab-git
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A JupyterLab extension that opens files by typing part of their name, via a quick open panel.
A JupyterLab extension that lets you register arbitrary Python functions as commands in the command palette.
A JupyterLab distribution that runs entirely in the browser, using WebAssembly-based Python kernels with no server required.
A JupyterLab extension that lets you browse and create new notebooks from a shared library of notebook templates.
A JupyterLab extension that lets you email notebooks, with or without code, as inline content, HTML or PDF attachments.