Attività iniziali usando Git in 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 record di ciò che è stato fatto e avere la possibilità di ripristinare le versioni precedenti dei file, se necessario. Git semplifica anche la collaborazione, consentendo le modifiche da più persone a tutte le persone unite in un'unica origine.

Git può essere installato in Windows AND in WSL

Una considerazione importante: quando si abilita WSL e si installa una distribuzione Linux, si sta installando un nuovo file system, separato dalla Windows NTFS C:\ unità nel computer. In Linux le unità non vengono fornite 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 sotto / è la stessa unità. Ad esempio, sul mio portatile, ho installato due versioni di Ubuntu (20.04 e 18.04), nonché Debian. Se si aprono queste distribuzioni, selezionare la home directory con il comando e quindi immettere il comando cd ~explorer.exe ., Windows Esplora file verrà aperto e visualizzato il percorso della directory per tale distribuzione.

Distribuzione linux Windows Percorso per accedere alla home folder
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 file Windows dalla riga di comando di WSL, invece di C:\Users\username, la directory sarà accessibile usando /mnt/c/Users/username, perché la distribuzione Linux visualizza il file system Windows come unità montata.

Sarà necessario installare Git in ogni file system con cui si intende usarlo.

Showing Git versions by distro

Installazione di Git

Git è già installato con la maggior parte delle distribuzioni di sottosistema Windows per Linux, tuttavia, potrebbe essere necessario aggiornare alla versione più recente. Sarà anche necessario configurare il file di configurazione git.

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

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

sudo apt-get install git

Nota

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

Configurazione file di configurazione Git

Per configurare 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 preferito):

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

Impostare il messaggio di posta elettronica 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 iscriversi per uno in GitHub. Se non si è mai usato Git, consultare le guide di GitHub per iniziare. Se è necessario modificare la configurazione Git, è possibile farlo con un editor di testo predefinito 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 di credenziali Git sicuro basato su .NET che può essere usato con WSL1 un WSL2. Consente il supporto per l'autenticazione a più fattori per GitHub repos, Azure DevOps, Azure DevOps Server e Bitbucket.

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

Per usare GCM con WSL, è necessario essere in Windows 10 versione 1903 o successiva. Si tratta della prima versione di Windows che include lo strumento necessario wsl.exe che GCM usa per interoperabilità con Git nelle distribuzioni WSL.

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

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

Per configurare GCM da usare con una distribuzione WSL, aprire la distribuzione e immettere questo comando:

Se GIT installato è >= v2.36.1

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

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

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

Nota

L'uso di GCM come helper delle credenziali per un'installazione git WSL significa che qualsiasi set di configurazione in WSL Git non viene rispettato da GCM (per impostazione predefinita). Questo 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 come vengono archiviate in file diversi (%USERPROFILE%\.gitconfig vs \\wsl$\distro\home\$USER\.gitconfig). È possibile configurare WSL in modo che GCM userà la configurazione Git WSL, ma ciò significa che le impostazioni proxy saranno univoche per l'installazione WSL specifica e non sono condivise con altri utenti o l'host Windows.

Git con SSH

Git Credential Manager funziona solo con le remote HTTP(S). È 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

Ora 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 Criteri di gruppo per la sicurezza della firma del codice, potrebbe essere necessario associare la chiave Criteri di gruppo alla posta elettronica di GitHub.

Aggiunta di un file Git Ignore

È consigliabile aggiungere un file con estensione gitignore ai progetti. GitHub offre una raccolta di modelli con estensione gitignore utili con configurazioni di file con estensione gitignore consigliate organizzate in base al caso d'uso. Ad esempio, ecco GitHub modello gitignore predefinito per un progetto di 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, .gitignore configurato per il tipo di progetto specifico e opzioni per aggiungere una licenza se necessario.

Git e VS Code

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

Terminazioni della 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 rispetto alle terminazioni di riga. Per evitare che ciò si verifichi, è possibile disabilitare la conversione della riga usando un .gitattributes file o a livello globale sul lato Windows. Vedere questa VS Code documentazione sulla risoluzione dei problemi di terminazione della riga Git.

Risorse aggiuntive