Source control FAQ
This article answers support and compatibility questions about source control in Visual Studio Code. To perform a Git task, use the task guides. For errors and unexpected behavior, see source control troubleshooting. If you're setting up Git for the first time, start with the quickstart.
Git clients and providers
Can VS Code use GitHub Desktop for Git operations?
No. VS Code uses the official Git distribution for its built-in Git integration. Installing GitHub Desktop doesn't replace this requirement.
Can I use Team Foundation Version Control?
Install the Azure Repos extension to add Team Foundation Version Control support to VS Code.
Can I use another source control provider?
Yes. Git support is built into VS Code, and extensions can contribute support for other source control systems. Search the Extensions view (⇧⌘X (Windows, Linux Ctrl+Shift+X)) for @category:"scm providers".
Authentication
Can I use SSH authentication with VS Code?
Yes. VS Code uses the SSH configuration from your Git installation. If an SSH key has a passphrase, configure an SSH agent so Git can request or reuse the passphrase.
For platform-specific configuration, see GitHub's SSH documentation.
How do I authenticate with an Azure DevOps organization that requires multifactor authentication?
Use Git Credential Manager, the recommended Git credential helper for Windows, macOS, and Linux. Git for Windows includes Git Credential Manager.
GitHub
Is GitHub Enterprise Server supported?
Yes. VS Code supports authentication with GitHub Enterprise Server. Open a local checkout of a GitHub Enterprise Server repository and follow the sign-in prompt.
The GitHub Pull Requests and Issues extension also supports GitHub Enterprise Server. Configure the extension for your server before you manage pull requests or issues.
Common tasks
Use these focused guides for Git tasks and workflow questions:
| Task or question | Guide |
|---|---|
| Choose which changes to commit | Stage changes |
| Undo the last commit or reverse a shared commit | Undo a local commit or undo a pushed commit |
| Remove uncommitted edits | Discard changes |
| Understand why a file is both staged and unstaged | Why a file appears in both lists |
| Create, rename, or delete a branch | Work with branches |
| Download or upload commits without doing both | Choose between fetch, pull, push, and sync |
| Finish or stop a merge or rebase | Complete the operation or cancel an operation |
| Understand why an ignored file still appears | Troubleshoot ignored files |
| Inspect commits and branches | View branch and commit history |