{"id":13421749,"url":"https://github.com/jupyterlab/jupyterlab-git","last_synced_at":"2026-03-02T15:02:28.350Z","repository":{"id":38240374,"uuid":"94917848","full_name":"jupyterlab/jupyterlab-git","owner":"jupyterlab","description":"A Git extension for JupyterLab","archived":false,"fork":false,"pushed_at":"2025-04-03T16:07:07.000Z","size":31827,"stargazers_count":1504,"open_issues_count":115,"forks_count":345,"subscribers_count":39,"default_branch":"main","last_synced_at":"2025-05-07T11:42:03.194Z","etag":null,"topics":["git","jupyterlab","jupyterlab-extension"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jupyterlab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":"https://jupyter.org/about#donate"}},"created_at":"2017-06-20T17:31:00.000Z","updated_at":"2025-05-04T22:05:57.000Z","dependencies_parsed_at":"2022-07-11T22:46:18.417Z","dependency_job_id":"c8412f03-9fa6-4b34-b3d7-d303117a415e","html_url":"https://github.com/jupyterlab/jupyterlab-git","commit_stats":{"total_commits":1533,"total_committers":106,"mean_commits":"14.462264150943396","dds":0.8408349641226354,"last_synced_commit":"771e739089b550e924eac8b0eabf3b870ac62212"},"previous_names":[],"tags_count":82,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterlab%2Fjupyterlab-git","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterlab%2Fjupyterlab-git/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterlab%2Fjupyterlab-git/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterlab%2Fjupyterlab-git/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jupyterlab","download_url":"https://codeload.github.com/jupyterlab/jupyterlab-git/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254140738,"owners_count":22021218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","jupyterlab","jupyterlab-extension"],"created_at":"2024-07-30T23:00:29.467Z","updated_at":"2026-01-05T10:08:20.510Z","avatar_url":"https://github.com/jupyterlab.png","language":"TypeScript","funding_links":["https://jupyter.org/about#donate"],"categories":["Uncategorized","TypeScript","Python 程序","JupyterLab扩展","JupyterLab Extensions","Version Control"],"sub_categories":["Uncategorized","网络服务_其他"],"readme":"# jupyterlab-git\n\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyterlab/jupyterlab-git/main?urlpath=lab/tree/examples/demo.ipynb) [![Github Actions Status](https://github.com/jupyterlab/jupyterlab-git/actions/workflows/build.yml/badge.svg)](https://github.com/jupyterlab/jupyterlab-git/actions/workflows/build.yml) [![Version](https://img.shields.io/npm/v/@jupyterlab/git.svg)](https://www.npmjs.com/package/@jupyterlab/git) [![Version](https://img.shields.io/pypi/v/jupyterlab-git.svg)](https://pypi.org/project/jupyterlab-git/) [![Downloads](https://img.shields.io/npm/dm/@jupyterlab/git.svg)](https://www.npmjs.com/package/@jupyterlab/git) [![Version](https://img.shields.io/conda/vn/conda-forge/jupyterlab-git.svg)](https://anaconda.org/conda-forge/jupyterlab-git) [![Downloads](https://img.shields.io/conda/dn/conda-forge/jupyterlab-git.svg)](https://anaconda.org/conda-forge/jupyterlab-git)\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-31-orange.svg?style=flat-square)](#contributors-)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nA JupyterLab extension for version control using Git\n\n![ui_glow_up](https://raw.githubusercontent.com/jupyterlab/jupyterlab-git/main/docs/figs/preview.gif)\n\nTo see the extension in action, open the example notebook included in the Binder [demo](https://mybinder.org/v2/gh/jupyterlab/jupyterlab-git/main?urlpath=lab/tree/examples/demo.ipynb).\n\n## Requirements\n\n- JupyterLab \u003e= 4.0 ([older version] available for 2.x and 3.x)\n- Git (version `\u003e=2.x`)\n\nFor older versions of JupyterLab, go to:\n\n- [3.x branch](https://github.com/jupyterlab/jupyterlab-git/tree/jlab-3)\n- [2.x branch](https://github.com/jupyterlab/jupyterlab-git/tree/jlab-2)\n\n## Usage\n\n- Open the Git extension from the _Git_ tab on the left panel\n- [Set up authentication](#authentication-to-remote-repository-hosts)\n\n## Install\n\nTo install perform the following steps, with _pip_:\n\n```bash\npip install --upgrade jupyterlab jupyterlab-git\n```\n\nor with _conda_:\n\n```bash\nconda install -c conda-forge jupyterlab jupyterlab-git\n```\n\n## Uninstall\n\nTo remove the extension, execute:\n\n```bash\npip uninstall jupyterlab-git\n```\n\nor with _conda_:\n\n```bash\nconda remove jupyterlab-git\n```\n\n## Settings\n\n### Authentication to remote repository hosts\n\nIf you are seeing errors similar to `[E yyyy-mm-dd hh:mm:ss ServerApp] 500 POST /git/\u003cclone|push|pull|status\u003e` on the console which is running the JupyterLab server, you probably need to set up a credentials store for your local Git repository.\n\nThis extension tries to handle credentials for HTTP(S) connections (if you don't have set up a credential manager). But not for other SSH connections.\n\n\u003e For Windows users, it is recommended to install [git for windows](https://gitforwindows.org/). It will automatically set up a credential manager.\n\u003e In order to connect to a remote host, it is recommended to use SSH.\n\n#### HTTP(S) protocol\n\nThe extension can cache temporarily (by default for an hour) credentials. To use the caching, you will need to\ncheck the option _Save my login temporarily_ in the dialog asking your credentials.\n\n\u003e You can set a longer cache timeout; see [Server Settings](#server-settings).\n\n\u003e This is a new feature since v0.37.0\n\n#### SSH protocol\n\nHere are the steps to follow to set up SSH authentication (skip any that is already accomplished for your project):\n\n1. [Create a SSH key](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)\n2. Register the public part of it to your Git server:\n   - [GitHub](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)\n   - [GitLab](https://docs.gitlab.com/ee/user/ssh.html#add-an-ssh-key-to-your-gitlab-account)\n3. Optionally, if you have more than one key managed by your ssh agent: [Create a config file for the ssh-agent](https://stackoverflow.com/a/21938804)\n4. Tell your local Git repository to [connect to remote via ssh](https://docs.github.com/en/get-started/getting-started-with-git/managing-remote-repositories#switching-remote-urls-from-https-to-ssh)\n\nYou should now be able to pull and push committed changes to and from your remote repository using the respective buttons on the top of the extension's panel.\n\n### UI Settings\n\nOnce installed, extension behavior can be modified via the following settings which can be set in JupyterLab's advanced settings editor:\n\n- **blockWhileCommandExecutes**: suspend JupyterLab user interaction until Git commands (e.g., `commit`, `pull`, `reset`, `revert`) finish executing. Setting this to `true` helps mitigate potential race conditions leading to data loss, conflicts, and a broken Git history. Unless running a slow network, UI suspension should not interfere with standard workflows. Setting this to `false` allows for actions to trigger multiple concurrent Git actions.\n- **cancelPullMergeConflict**: cancel pulling changes from a remote repository if there exists a merge conflict. If set to `true`, when fetching and integrating changes from a remote repository, a conflicting merge is canceled and the working tree left untouched.\n- **commitAndPush**: Whether to trigger or not a push for each commit; default is `false`.\n- **disableBranchWithChanges**: disable all branch operations, such as creating a new branch or switching to a different branch, when there are changed/staged files. When set to `true`, this setting guards against overwriting and/or losing uncommitted changes.\n- **displayStatus**: display Git extension status updates in the JupyterLab status bar. If `true`, the extension displays status updates in the JupyterLab status bar, such as when pulling and pushing changes, switching branches, and polling for changes. Depending on the level of extension activity, some users may find the status updates distracting. In which case, setting this to `false` should reduce visual noise.\n- **doubleClickDiff**: double click a file in the Git extension panel to open a diff of the file instead of opening the file for editing.\n- **historyCount**: number of commits shown in the history log, beginning with the most recent. Displaying a larger number of commits can lead to performance degradation, so use caution when modifying this setting.\n- **promptUserIdentity**: Whether to prompt for user name and email on every commit.\n- **refreshIfHidden**: whether to refresh even if the Git tab is hidden; default to `false` (i.e. refresh is turned off if the Git tab is hidden).\n- **refreshInterval**: number of milliseconds between polling the file system for changes. In order to ensure that the UI correctly displays the current repository status, the extension must poll the file system for changes. Longer polling times increase the likelihood that the UI does not reflect the current status; however, longer polling times also incur less performance overhead.\n- **simpleStaging**: enable a simplified concept of staging. When this setting is `true`, all files with changes are automatically staged. When we develop in JupyterLab, we often only care about what files have changed (in the broadest sense) and don't need to distinguish between \"tracked\" and \"untracked\" files. Accordingly, this setting allows us to simplify the visual presentation of changes, which is especially useful for those less acquainted with Git.\n\n### Server Settings\n\n- `JupyterLabGit.actions.post_init`: Set post _git init_ actions.\n  It is possible to provide a list of commands to be executed in a folder after it is initialized as Git repository.\n- `JupyterLabGit.credential_helper`: Git credential helper to set to cache the credentials.\n  The default value is `cache --timeout=3600` to cache the credentials for an hour. If you want to cache them for 10 hours, set `cache --timeout=36000`.\n- `JupyterLabGit.excluded_paths`: Set path patterns to exclude from this extension. You can use wildcard and interrogation mark for respectively everything or any single character in the pattern.\n- `JupyterLabGit.git_command_timeout_s`: Set the timeout for git operations. Defaults to 20 seconds.\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eHow to set server settings?\u003c/b\u003e\u003c/summary\u003e\n\nIn `$HOME/.jupyter/jupyter_notebook_config.py` (on Windows `%USERPROFILE%/.jupyter/jupyter_notebook_config.py`):\n\n```python\nc.JupyterLabGit.actions = {\"post_init\": [\"touch dummy_init.dat\"]}\nc.JupyterLabGit.credential_helper = 'cache --timeout=3600'\n```\n\nOr equivalently in `$HOME/.jupyter/jupyter_notebook_config.json` (on Windows `%USERPROFILE%/.jupyter/jupyter_notebook_config.json`):\n\n```json\n{\n  \"JupyterLabGit\": {\n    \"actions\": {\n      \"post_init\": [\"touch dummy_init.dat\"]\n    },\n    \"credential_helper\": \"cache --timeout=3600\"\n  }\n}\n```\n\n\u003c/details\u003e\n\n## Troubleshoot\n\nIf you are seeing the frontend extension, but it is not working, check\nthat the server extension is enabled:\n\n```bash\njupyter server extension list\n```\n\nIf the server extension is installed and enabled, but you are not seeing\nthe frontend extension, check the frontend extension is installed:\n\n```bash\njupyter labextension list\n```\n\nIf they do not match or one is missing, please [reinstall the package](README.md#Install).\n\n\u003cdetails\u003e\u003csummary\u003ethe Git panel does not recognize that you are in a Git repository.\u003c/summary\u003e\n\nPossible fixes:\n\n- Be sure to be in a Git repository in the filebrowser tab\n\n- Check the server log. If you see a warning with a 404 code similar to:\n  `[W 00:27:41.800 LabApp] 404 GET /git/settings?version=0.20.0`\n\n  Explicitly enable the server extension by running:\n\n  ```bash\n  jupyter server extension enable --py jupyterlab_git\n  ```\n\n- If you are using JupyterHub or some other technologies requiring an initialization script which includes the jupyterlab-git extension, be sure to install both the frontend and the server extension **before** launching JupyterLab.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ethe Git panel is not visible.\u003c/summary\u003e\n\nPossible fixes:\n\n- Check that the JupyterLab extension is installed:\n\n      ```bash\n      jupyter labextension list\n      ```\n\n      If you don't see `@jupyterlab/git v... enabled OK` in the list, explicitly install the jupyter labextension by running:\n\n      ```bash\n      jupyter labextension install @jupyterlab/git\n      ```\n\n      If you see `@jupyterlab/git` under `Uninstalled core extensions: `, your installation may have been corrupted. You can run `jupyter lab clean --all` and\n      reinstall all your extensions.\n\n\u003c/details\u003e\n\n## Contributing\n\nIf you would like to contribute to the project, please read our [contributor documentation](https://github.com/jupyterlab/jupyterlab/blob/main/CONTRIBUTING.md).\n\nJupyterLab follows the official [Jupyter Code of Conduct](https://github.com/jupyter/governance/blob/main/conduct/code_of_conduct.md).\n\n### Development install\n\nNote: You will need NodeJS to build the extension package.\n\nThe `jlpm` command is JupyterLab's pinned version of\n[yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use\n`yarn` or `npm` in lieu of `jlpm` below.\n\n```bash\n# Clone the repo to your local environment\ngit clone https://github.com/jupyterlab/jupyterlab-git.git\n# Change directory to the jupyterlab-git directory\ncd jupyterlab-git\n# Install package in development mode\npip install -e \".[dev,test]\"\npre-commit install\n# Link your development version of the extension with JupyterLab\njupyter labextension develop . --overwrite\n# Server extension must be manually installed in develop mode\njupyter server extension enable jupyterlab_git\n# Rebuild extension Typescript source after making changes\njlpm run build\n```\n\nYou can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.\n\n```bash\n# Watch the source directory in one terminal, automatically rebuilding when needed\njlpm run watch\n# Run JupyterLab in another terminal\njupyter lab\n```\n\nWith the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).\n\nBy default, the `jlpm run build` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:\n\n```bash\njupyter lab build --minimize=False\n```\n\n### Development uninstall\n\n```bash\n# Server extension must be manually disabled in develop mode\njupyter server extension disable jupyterlab_git\npip uninstall jupyterlab_git\n```\n\nIn development mode, you will also need to remove the symlink created by `jupyter labextension develop`\ncommand. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions`\nfolder is located. Then you can remove the symlink named `@jupyterlab/git` within that folder.\n\n### Testing the extension\n\n#### Server tests\n\nThis extension is using [Pytest](https://docs.pytest.org/) for Python code testing.\n\nInstall test dependencies (needed only once):\n\n```sh\npip install -e \".[test]\"\n# Each time you install the Python package, you need to restore the front-end extension link\njupyter labextension develop . --overwrite\n```\n\nTo execute them, run:\n\n```sh\npytest -vv -r ap --cov jupyterlab_git\n```\n\n#### Frontend tests\n\nThis extension is using [Jest](https://jestjs.io/) for JavaScript code testing.\n\nTo execute them, execute:\n\n```sh\njlpm\njlpm test\n```\n\n#### Integration tests\n\nThis extension uses [Playwright](https://playwright.dev/docs/intro) for the integration tests (aka user level tests).\nMore precisely, the JupyterLab helper [Galata](https://github.com/jupyterlab/jupyterlab/tree/master/galata) is used to handle testing the extension in JupyterLab.\n\nMore information are provided within the [ui-tests](./ui-tests/README.md) README.\n\n### Packaging the extension\n\nSee [RELEASE](RELEASE.md)\n\n## Contributors ✨\n\nThe Jupyter Git extension is part of [Project Jupyter](http://jupyter.org/) and is developed by an open community of contributors. To see who has been active recently, please look at the [\"Contributors\"](https://github.com/jupyterlab/jupyterlab-git/graphs/contributors) tab. Below we list the people and entities who contributed in different ways to the project ([emoji key](https://allcontributors.org/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://amazon.com/aws\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/2232217?v=4?s=100\" width=\"100px;\" alt=\"Amazon Web Services\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAmazon Web Services\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#financial-aws\" title=\"\"\u003e🤝\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ashutoshbondre\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/13174154?v=4?s=100\" width=\"100px;\" alt=\"Ashutosh Bondre\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAshutosh Bondre\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=ashutoshbondre\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Aashutoshbondre\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/stdlib-js/stdlib\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/2643044?v=4?s=100\" width=\"100px;\" alt=\"Athan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAthan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=kgryte\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Akgryte\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#projectManagement-kgryte\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"#design-kgryte\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://basokant.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/70033855?v=4?s=100\" width=\"100px;\" alt=\"Ben Asokanthan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBen Asokanthan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=basokant\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/BoscoCHW\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/45115214?v=4?s=100\" width=\"100px;\" alt=\"Bosco Chan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBosco Chan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=BoscoCHW\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ellisonbg\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/27600?v=4?s=100\" width=\"100px;\" alt=\"Brian E. Granger\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrian E. Granger\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#projectManagement-ellisonbg\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"#design-ellisonbg\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#ideas-ellisonbg\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#fundingFinding-ellisonbg\" title=\"Funding Finding\"\u003e🔍\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Damans227\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/61474540?v=4?s=100\" width=\"100px;\" alt=\"Daman Arora\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaman Arora\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=Damans227\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://dquach.dev\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6735818?v=4?s=100\" width=\"100px;\" alt=\"Dat Quach\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDat Quach\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=quachtridat\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/fcollonval\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/8435071?v=4?s=100\" width=\"100px;\" alt=\"Frédéric Collonval\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFrédéric Collonval\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#maintenance-fcollonval\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/27518229?v=4?s=100\" width=\"100px;\" alt=\"Hana Zarea\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHana Zarea\u003c/b\u003e\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=hzarea\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Ahzarea\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://ianhi.github.io\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/10111092?v=4?s=100\" width=\"100px;\" alt=\"Ian Hunt-Isaak\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIan Hunt-Isaak\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=ianhi\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Aianhi\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jaipreet-s\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/43826141?v=4?s=100\" width=\"100px;\" alt=\"Jaipreet Singh\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJaipreet Singh\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#projectManagement-jaipreet-s\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Ajaipreet-s\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=jaipreet-s\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-jaipreet-s\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/zzhangjii\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/11495372?v=4?s=100\" width=\"100px;\" alt=\"Ji Zhang\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJi Zhang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=zzhangjii\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Azzhangjii\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kentarolim10\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/61769040?v=4?s=100\" width=\"100px;\" alt=\"Kentaro Lim\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKentaro Lim\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=kentarolim10\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://taletskiy.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/8834829?v=4?s=100\" width=\"100px;\" alt=\"Konstantin Taletskiy\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKonstantin Taletskiy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=ktaletsk\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Aktaletsk\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://kostyafarber.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/73378227?v=4?s=100\" width=\"100px;\" alt=\"Kostya Farber\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKostya Farber\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=kostyafarber\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/68607795?v=4?s=100\" width=\"100px;\" alt=\"Linda Ngoc Nguyen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLinda Ngoc Nguyen\u003c/b\u003e\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=iflinda\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://fellowship.mlh.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/65834464?s=200\u0026v=4?s=100\" width=\"100px;\" alt=\"Major League Hacking\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMajor League Hacking\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#financial-mlh\" title=\"\"\u003e🤝\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/max-klein-b514419\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/2263641?v=4?s=100\" width=\"100px;\" alt=\"Max Klein\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMax Klein\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=telamonian\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Atelamonian\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#projectManagement-telamonian\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"#design-telamonian\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#infra-telamonian\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/michal-krassowski/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5832902?v=4?s=100\" width=\"100px;\" alt=\"Michał Krassowski\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichał Krassowski\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=krassowski\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Akrassowski\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/issues?q=author%3Akrassowski\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://navn.me\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/59669957?v=4?s=100\" width=\"100px;\" alt=\"Navinn Ravindaran\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNavinn Ravindaran\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=navn-r\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/neelamgehlot\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/15882916?v=4?s=100\" width=\"100px;\" alt=\"Neelam Gehlot\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNeelam Gehlot\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=neelamgehlot\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Aneelamgehlot\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://noahstapp.com/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/30483654?v=4?s=100\" width=\"100px;\" alt=\"Noah Stapp\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNoah Stapp\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=NoahStapp\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3ANoahStapp\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://saul.shanabrook.com/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1186124?v=4?s=100\" width=\"100px;\" alt=\"Saul Shanabrook\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSaul Shanabrook\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=saulshanabrook\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#projectManagement-saulshanabrook\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/pulls?q=is%3Apr+reviewed-by%3Asaulshanabrook\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#infra-saulshanabrook\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/shawnesquivel\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/94336773?v=4?s=100\" width=\"100px;\" alt=\"Shawn Esquivel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eShawn Esquivel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=shawnesquivel\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://sheezaaziz.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47278108?v=4?s=100\" width=\"100px;\" alt=\"Sheeza Aziz\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSheeza Aziz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=sheezaaziz\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://sinakhalili.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/20732540?v=4?s=100\" width=\"100px;\" alt=\"Sina Khalili\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSina Khalili\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=SinaKhalili\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.deshaw.com/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/2298205?v=4?s=100\" width=\"100px;\" alt=\"The D. E. Shaw Group\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eThe D. E. Shaw Group\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#financial-deshaw\" title=\"\"\u003e🤝\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ZeshanFayyaz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/43391249?v=4?s=100\" width=\"100px;\" alt=\"Zeshan Fayyaz\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZeshan Fayyaz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=ZeshanFayyaz\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Zxun2\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/63457492?v=4?s=100\" width=\"100px;\" alt=\"Zong Xun\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZong Xun\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab-git/commits?author=Zxun2\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jupytercalpoly\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/19445175?v=4?s=100\" width=\"100px;\" alt=\"jupytercalpoly\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejupytercalpoly\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#financial-jupytercalpoly\" title=\"\"\u003e🤝\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcomed!\n\nTo add yourself, or someone else, to this list you can either [use the bot](https://allcontributors.org/bot/usage) (`@all-contributors please add \u003cusername\u003e for \u003ccontributions\u003e`) or [the CLI](https://allcontributors.org/cli/usage) (`jlpm all-contributors add \u003cusername\u003e \u003ccontributions\u003e`).\n\nIf you manually edit the `.all-contributorsrc` config file, run `yarn run contributors:generate`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjupyterlab%2Fjupyterlab-git","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjupyterlab%2Fjupyterlab-git","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjupyterlab%2Fjupyterlab-git/lists"}