Introduzione all'uso di Git nel sottosistema Windows per Linux

Git è il sistema di controllo della versione più comunemente usato. Con Git è possibile tenere traccia delle modifiche apportate ai file, in modo da avere un registro di ciò che è stato fatto e avere la possibilità di ripristinare le versioni precedenti dei file, se necessario. Git semplifica inoltre la collaborazione, consentendo a più persone di unire tutte le modifiche in un'unica fonte.

Git può essere installato su Windows AND su WSL

Una considerazione importante: quando si abilita WSL e si installa una distribuzione Linux, si installa un nuovo file system, separato dall'unità C:\ NTFS di Windows sul computer. In Linux alle unità non vengono assegnate lettere. Vengono assegnati punti di montaggio. La radice del file system / è il punto di montaggio della partizione radice o della cartella, nel caso di WSL. Non tutto ciò che si trova sotto / è la stessa unità. Ad esempio, nel mio portatile ho installato due versioni di Ubuntu (20.04 e 18.04), oltre a Debian. Se si aprono queste distribuzioni, selezionare la home directory con il comando cd ~, quindi immettere il comando explorer.exe ., si aprirà Esplora file di Windows e mostrerà il percorso della directory di tale distribuzione.

Distribuzione Linux Percorso di Windows per accedere alla cartella home
Ubuntu 20.04 \\wsl$\Ubuntu-20.04\home\username
Ubuntu 18.04 \\wsl$\Ubuntu-18.04\home\username
Debian \\wsl$\Debian\home\username
Windows PowerShell C:\Users\username

Suggerimento

Se si sta cercando di accedere alla directory di file di Windows dalla riga di comando della distribuzione WSL, invece di C:\Users\username, la directory sarà accessibile usando /mnt/c/Users/username, perché la distribuzione Linux visualizza il file system di Windows come unità montata.

È necessario installare Git su ogni file system con cui si intende usarlo.

Visualizzazione delle versioni git per distribuzione

Installazione di Git

Git è già installato con la maggior parte delle distribuzioni del sottosistema Windows per Linux, ma può essere necessario eseguire l'aggiornamento alla versione più recente. Sarà inoltre necessario impostare il file di configurazione Git.

Per installare Git, vedere il sito Download di Git per Linux. Ogni distribuzione Linux ha un proprio comando di gestione pacchetti e installazione.

Per la versione stabile più recente di Git in Ubuntu/Debian, immettere il comando:

sudo apt-get install git

Nota

È inoltre possibile installare Git per Windows, se non è già stato fatto.

Installazione del file di configurazione Git

Per installare il file di configurazione Git, aprire una riga di comando per la distribuzione in uso e impostare il nome con questo comando (sostituendo "Nome" con il nome utente preferito):

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

Impostare la propria email con questo comando (sostituendo "youremail@domain.com" con il messaggio di posta elettronica preferito):

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

Suggerimento

Se non si dispone ancora di un account GitHub, è possibile registrarsi su GitHub. Se non hai mai usato GIT, consulta le guide di GitHub per iniziare. Se è necessario modificare la configurazione Git, è possibile usare un editor di testo integrato come Nano: nano ~/.gitconfig.

È consigliabile proteggere l'account con l'autenticazione a due fattori (2FA).

Configurazione di Git Credential Manager

Git Credential Manager (GCM) è un helper credenziali Git sicuro basato su .NET che può essere usato con WSL1 e WSL2. Abilita il supporto dell'autenticazione a più fattori per repository GitHub, Azure DevOps, Azure DevOps Server e Bitbucket.

GCM è integrato nel flusso di autenticazione per servizi come GitHub e, dopo aver eseguito l'autenticazione al provider di hosting, richiede un nuovo token di autenticazione. Il token viene quindi archiviato in modo sicuro in Gestione credenziali di Windows. Dopo la prima volta, sarà possibile usare Git per comunicare con il provider di hosting senza dover eseguire di nuovo l'autenticazione. Verrà semplicemente eseguito l'accesso al token in Gestione credenziali di Windows.

Per usare GCM con WSL, è necessario utilizzare Windows 10 versione 1903 o successiva. Questa è la prima versione di Windows che include lo wsl.exe strumento necessario usato da GCM per interagire con Git nelle distribuzioni WSL.

È consigliabile installare la versione più recente di Git per Windows per condividere credenziali e impostazioni tra WSL e l'host Windows. Git Credential Manager è incluso in Git per Windows e l’ultima versione è inclusa in ogni nuova release di Git per Windows. Durante l'installazione, verrà chiesto di selezionare un helper credenziali, con GCM impostato come predefinito.

Se c’è un motivo per cui non installare Git per Windows, è possibile installare GCM come applicazione Linux direttamente nella distribuzione WSL, ma si noti che in questo modo GCM è in esecuzione come applicazione Linux e non può usare le funzionalità di autenticazione o archiviazione delle credenziali del sistema operativo Windows host. Vedere il repository GCM per istruzioni su come configurare WSL senza Git per Windows.

Per configurare GCM per l'uso con una distribuzione WSL, aprire la distribuzione e immettere il comando seguente:

Se GIT installato è >= v2.39.0

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

altrimenti se GIT installato è >= v2.36.1

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

altrimenti se la versione è < v2.36.1 immettere questo comando:

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

Nota

L’uso di GCM come helper credenziali per un'installazione Git WSL significa che qualsiasi set di configurazione in WSL Git non è rispettato da GCM (per impostazione predefinita). Questo avviene perché GCM è in esecuzione come applicazione Windows e quindi userà Git per l'installazione di Windows per eseguire query sulla configurazione. Ciò significa che le impostazioni proxy per GCM devono essere impostate in Git per Windows e WSL Git perché sono archiviate in file diversi (%USERPROFILE%\.gitconfig vs \\wsl$\distro\home\$USER\.gitconfig). È possibile configurare WSL in modo che GCM usi la configurazione Git WSL, ma questo significa che le impostazioni proxy saranno univoche per l'installazione specifica di WSL e non condivise con altri host o con l'host Windows.

Git con SSH

Git Credential Manager funziona solo con HTTP(S) remoti. È comunque possibile usare Git con SSH:

Configurazione aggiuntiva per Azure

Se si intende usare Azure Repos o Azure DevOps, è necessaria una configurazione aggiuntiva:

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

A questo punto, qualsiasi operazione git eseguita all'interno della distribuzione WSL userà GCM. Se nella cache hai già memorizzato le credenziali per un host, quest'ultimo potrà accedere alle credenziali da Gestione credenziali. In caso contrario, riceverai una risposta della finestra di dialogo con la richiesta delle credenziali anche se ti trovi in una console Linux.

Suggerimento

Se si usa una chiave GPG per la sicurezza della firma del codice, potrebbe essere necessario associare la chiave GPG all’email GitHub.

Aggiunta di un file Git Ignore

È consigliabile aggiungere un file .gitignore al progetto. GitHub offre una raccolta di utili modelli .gitignore con le impostazioni consigliate per i file .gitignore, organizzate in base al caso d'uso. Ad esempio, qui è disponibile il modello gitignore predefinito di GitHub per un progetto Node.js.

Se si sceglie di creare un nuovo repository usando il sito Web di GitHub, sono disponibili caselle di controllo per inizializzare il repository con un file README, il file .gitignore configurato per il tipo di progetto specifico e le opzioni per aggiungere una licenza, se necessaria.

Git e VS Code

Visual Studio Code include il supporto integrato per Git, compresa una scheda di controllo del codice sorgente che mostrerà le modifiche e gestirà automaticamente un'ampia gamma di comandi Git. Altre informazioni sul supporto Git di VS Code.

Terminazioni di riga Git

Se si usa la stessa cartella del repository tra Windows, WSL o un contenitore, assicurarsi di configurare terminazioni di riga coerenti.

Poiché Windows e Linux usano terminazioni di riga predefinite diverse, Git può segnalare un numero elevato di file modificati che non presentano differenze a parte le terminazioni di riga. Per evitare che ciò accada, è possibile disabilitare la conversione di terminazione della riga usando un .gitattributes file o a livello globale sul lato Windows. Vedere questo documento di VS Code sulla risoluzione dei problemi di terminazione della riga Git.

Risorse aggiuntive