Go started using Git on Windows Subsystem for Linux

Git is the most usually used version command system. With Git, you tin can rail changes you brand to files, so you have a record of what has been done, and accept the ability to revert to earlier versions of the files if needed. Git too makes collaboration easier, allowing changes by multiple people to all exist merged into one source.

Git can be installed on Windows AND on WSL

An important consideration: when you enable WSL and install a Linux distribution, you are installing a new file system, separated from the Windows NTFS C:\ bulldoze on your machine. In Linux, drives are non given letters. They are given mount points. The root of your file arrangement / is the mountain point of your root partition, or folder, in the case of WSL. Non everything nether / is the same drive. For instance, on my laptop, I've installed two version of Ubuntu (xx.04 and eighteen.04), as well every bit Debian. If I open those distributions, select the home directory with the command cd ~, so enter the control explorer.exe ., Windows File Explorer will open and show me the directory path for that distribution.

Linux distro Windows Path to access dwelling house folder
Ubuntu twenty.04 \\wsl$\Ubuntu-20.04\dwelling house\username
Ubuntu 18.04 \\wsl$\Ubuntu-18.04\home\username
Debian \\wsl$\Debian\home\username
Windows PowerShell C:\Users\username

Tip

If you are seeking to access the Windows file directory from your WSL distribution control line, instead of C:\Users\username, the directory would be accessed using /mnt/c/Users/username, considering the Linux distribution views your Windows file system equally a mounted bulldoze.

You volition need to install Git on each file system that you intend to employ information technology with.

Showing Git versions by distro

Installing Git

Git comes already installed with most of the Windows Subsystem for Linux distributions, all the same, y'all may desire to update to the latest version. You also will need to fix your git config file.

To install Git, run across the Git Download for Linux site. Each Linux distribution has their own parcel manager and install command.

For the latest stable Git version in Ubuntu/Debian, enter the command:

              sudo apt-get install git                          

Git config file setup

To prepare up your Git config file, open a command line for the distribution yous're working in and ready your name with this command (replacing "Your Name" with your preferred username):

              git config --global user.name "Your Name"                          

Set your email with this control (replacing "youremail@domain.com" with the electronic mail you prefer):

              git config --global user.email "youremail@domain.com"                          

Tip

If you don't notwithstanding take a GitHub account, you can sign-up for ane on GitHub. If you've never worked with Git before, GitHub Guides can help yous get started. If you demand to edit your Git config, you can do then with a built-in text editor like nano: nano ~/.gitconfig.

Nosotros recommend that y'all secure your account with ii-cistron hallmark (2FA).

Git Credential Manager setup

Git Credential Director (GCM) is a secure Git credential helper built on .Cyberspace that can be used with both WSL1 an WSL2. It enables multi-gene authentication support for GitHub repos, Azure DevOps, Azure DevOps Server, and Bitbucket.

GCM integrates into the authentication flow for services like GitHub and, once you're authenticated to your hosting provider, requests a new authentication token. It then stores the token securely in the Windows Credential Manager. After the first time, y'all can employ Git to talk to your hosting provider without needing to re-authenticate. It will just admission the token in the Windows Credential Manager.

In order to utilise GCM with WSL you must be on Windows ten Version 1903 or afterward. This is the first version of Windows that includes the required wsl.exe tool that GCM uses to interoperate with Git in your WSL distributions.

It is recommended to install the latest Git for Windows in order to share credentials & settings between WSL and the Windows host. Git Credential Manager is included with Git for Windows and the latest version is included in each new Git for Windows release. During the installation, yous will be asked to select a credential helper, with GCM set as the default.

If you have a reason not to install Git for Windows, yous can install GCM as a Linux awarding direct in your WSL distribution, but note that doing and then means GCM is running as a Linux application and cannot apply the hallmark or credential storage features of the host Windows operating organisation. See the GCM repo for instructions on how to configure WSL without Git for Windows.

To fix GCM for apply with a WSL distribution, open up your distribution and enter this command:

              git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-director-core.exe"                          

Notation

Using GCM as a credential helper for a WSL Git installation ways that any configuration set in WSL Git is NOT respected past GCM (by default). This is because GCM is running as a Windows application, and therefore will use the Git for Windows installation to query configuration. This ways things like proxy settings for GCM need to be fix in Git for Windows too every bit WSL Git as they are stored in unlike files (%USERPROFILE%\.gitconfig vs \\wsl$\distro\abode\$USER\.gitconfig). You lot can configure WSL then that GCM will utilise the WSL Git configuration, but this means that proxy settings will be unique to the specific WSL installation and not shared with others or the Windows host.

Git with SSH

Git Credential Manager only works with HTTP(South) remotes. You can all the same utilise Git with SSH:

  • Azure DevOps SSH
  • GitHub SSH
  • Bitbucket SSH

Boosted configuration for Azure

If you intend to work with Azure Repos or Azure DevOps, some boosted configuration is required:

              git config --global credential.https://dev.azure.com.useHttpPath true                          

Now any git operation you perform within your WSL distribution will utilize GCM. If yous already take credentials buried for a host, it volition admission them from the credential manager. If non, y'all'll receive a dialog response requesting your credentials, even if you lot're in a Linux console.

Adding a Git Ignore file

We recommend calculation a .gitignore file to your projects. GitHub offers a collection of useful .gitignore templates with recommended .gitignore file setups organized according to your use-case. For case, here is GitHub'south default gitignore template for a Node.js project.

If you choose to create a new repo using the GitHub website, there are bank check boxes available to initialize your repo with a README file, .gitignore file set up for your specific project blazon, and options to add together a license if you need one.

Git and VS Code

Visual Studio Code comes with built-in support for Git, including a source control tab that will prove your changes and handle a variety of git commands for you lot. Learn more nigh VS Code's Git back up.

Git line endings

If y'all are working with the aforementioned repository binder between Windows, WSL, or a container, be certain to prepare consistent line endings.

Since Windows and Linux utilize dissimilar default line endings, Git may report a big number of modified files that take no differences bated from their line endings. To preclude this from happening, you tin can disable line ending conversion using a .gitattributes file or globally on the Windows side. See this VS Code dr. about resolving Git line ending bug.

Additional resource

  • WSL & VS Code
  • GitHub Learning Lab: Online courses
  • Git Visualization Tool
  • Git Tools - Credential Storage