Introduzione a Git

Pubblicato: 2022-06-30

Quando ho iniziato a creare siti Web, ho "codificato da cowboy", il che significa che spesso stavo modificando i file dal vivo sul server. Mi ci sono voluti solo alcuni siti danneggiati per rendermi conto che questa era un'idea terribile. Poi ho iniziato a creare siti localmente sul mio computer. Più di una volta ho modificato un file locale solo per migrare il file nella posizione sbagliata nel mio client FTP. Di tanto in tanto ciò significherebbe sovrascrivere un file che non potrei riparare senza cercare una copia di backup che speravo di aver conservato.

Se hai ancora a che fare con FTP e non sei in grado di ripristinare i tuoi file, allora è il momento di imparare a usare Git per il controllo della versione.

Che cos'è il controllo della versione?

Un sistema di controllo della versione (VCS) è un tipo di software che aiuta gli sviluppatori di software a gestire le modifiche al loro codice nel tempo. Un buon sistema VCS terrà traccia di ogni modifica apportata al codice. Ciò significa che se si interrompe qualcosa, è possibile tornare a una versione precedente del codice che funzionava, senza provare a premere "Annulla" finché le cose non funzionano.

In un ambiente di squadra, un VCS ti aiuterà a lavorare con diversi membri fornendoti strumenti che ti permetteranno di unire le modifiche al codice quando diversi membri aggiornano i file.

Una delle cose che faccio in Git è creare un nuovo ramo per ogni funzionalità che creo. Ciò significa che posso tenere traccia delle modifiche apportate a un ramo, ma tornare comunque allo stato corrente del sito tornando al ramo principale. Parleremo di più di questo flusso di lavoro più avanti.

Cos'è Git?

Git è un sistema di controllo della versione, ma non è l'unico. Il repository principale di WordPress viene eseguito tramite SVN, anche se puoi trovare anche una copia Git. C'è anche Mercurial, Visual Source Safe, VEST e molte altre opzioni.

Nonostante tutte queste opzioni, Git è ciò che quasi tutti usano, quindi è il controllo della versione che impareremo oggi.

Termini e comandi di base di Git

Prima di approfondire i meccanismi di utilizzo di Git, dobbiamo comprendere alcuni termini. Tratteremo solo i termini che incontrerai regolarmente.

Per un elenco più completo di tutto ciò che potresti incontrare, guarda questo Git riferimento o questo elenco completo dei comandi Git .

Aggiungi : dopo aver apportato modifiche al codice, utilizzerai il comando git add per aggiungere le modifiche in modo che possano essere salvate.

Branch : un branch è una versione del tuo repository che differisce dal progetto di lavoro principale. Tutti i repository sono dotati di un ramo principale o, più comunemente nei progetti precedenti, di un ramo principale. Recentemente Git e Github hanno iniziato a cambiare il nome del ramo predefinito da master a main a causa dei problemi storici con la parola master. Git 2.28 ti consente anche di impostare il nome del ramo predefinito per qualsiasi nuovo progetto.

Checkout : usi il comando git checkout per passare da un ramo all'altro in un repository. Quando usi questo comando, Git cambia il contenuto dei file o aggiunge e rimuove file che differiscono tra i rami.

Clone : il comando git clone viene utilizzato per creare una copia di un repository dal repository di origine. Utilizzeresti questo comando per ottenere una copia locale di un repository remoto in modo da poter lavorare sul codice.

Commit : una volta che hai usato git add , devi usare git commit per poter salvare lo stato dei tuoi file in git.

init : git init crea un repository vuoto per te con tutti i file di base di cui Git ha bisogno per funzionare.

Unisci : dopo aver apportato modifiche su un ramo e averle aggiunte e salvate, puoi utilizzare il comando git merge per migrare tali modifiche in altri rami.

Origine : questo è il nome predefinito per la versione primaria del repository. Di solito cambio il mio per essere più descrittivo dell'origine però. Se sto lavorando con Github, cambio le impostazioni in Git in modo che l'origine diventi github. Questo mi aiuta a mantenere le cose chiare nella mia testa.

Push : aggiorna il ramo remoto con i commit che sono stati effettuati nella tua versione locale del repository.

Repository : può anche essere chiamato "Repo" ed è una directory di tutti i file e una cronologia Git delle modifiche a quei file.

Stato : git status ti mostra lo stato attuale del tuo repository funzionante.

.gitignore : questo è un file nascosto che contiene modelli di file che Git non si preoccuperà di tracciare. Se hai .DS_Store nei tuoi file .gitignore , ignorerà tutti i file fastidiosi che macOS inserisce spesso nelle cartelle.

Hosting di repository Git

Un'altra cosa da capire prima di immergerti è che, sebbene non sia necessaria una posizione remota per il tuo repository, non averne una ridurrà alcuni dei vantaggi dell'utilizzo di Git. Senza un repository remoto ospitato da qualche altra parte, non avrai un backup del tuo codice se il tuo computer muore o viene rubato.

Github e Bitbucket sono due dei luoghi più popolari per ospitare i tuoi repository Git perché sono per lo più gratuiti e puoi avere repository privati. Ciò significa che il tuo codice è sul server di qualcun altro, quindi se non ti piace l'idea, puoi utilizzare Gitlab sul tuo server per ospitare repository.

Installazione di Git

Su macOS, il modo più semplice per installare git è aprire Terminale e digitare git che ti chiederà di scaricare gli strumenti della riga di comando Xcode per installare git. Una volta terminato, puoi eseguire git –version per vedere quale versione di git hai. Se non funziona, ci sono altri modi per installare git su macOS.

Per gli utenti Windows, puoi installare Git con il programma di installazione Git ufficiale. Git viene anche fornito in bundle con l'applicazione Github Desktop, di cui parleremo più avanti.

Se sei su Linux, git dovrebbe essere fornito in bundle con il tuo gestore di pacchetti, oppure puoi guardare questi modi per installare git su Linux.

Configurazione dei valori predefiniti di Git

Una volta installato Git, devi configurarlo in modo che ogni commit utilizzi il tuo nome e la tua email e i messaggi di commit per usare il tuo editor preferito per inserire eventuali commenti che accompagnano il commit. Vedremo il modo per impostarli in macOS tramite l'applicazione Terminale.

git config --global user.name "Your Name" imposterà il nome che va con ogni commit effettuato sul tuo computer.

git config --global user.email "[email protected]" imposterà l'indirizzo email associato a ogni commit che fai.

git config --global core.editor vim renderà l'editor predefinito per Git vim. Anche se adoro vim, non è l'editor che tutti amano. Se usi Atom, utilizzeresti git config –global core.editor “atom –wait” o git config –global core.editor “subl -n -w” per Sublime Text.

Se ti piacciono gli IDE, Visual Studio Code ti consente anche di lavorare con Git direttamente dall'applicazione, se lo desideri, così come PHPStorm .

Istituzione di un archivio

Ora che abbiamo git installato e configurato, avviamo un repository di base. Apri il tuo Terminale e crea una cartella chiamata test-repository digitando mkdir test-repository . Quindi digita cd test-repository per passare alla directory test-repository e digita git init .

A questo punto, avrai una directory nascosta nella tua cartella chiamata .git . Poiché è un file nascosto, dovrai digitare ls -a in Terminale per elencare i file nascosti.

Usando git add

Ora creiamo un file digitando touch test.txt in Terminale. Quindi digita git status per vedere il file che hai appena aggiunto.

Come puoi vedere, il nuovo file che abbiamo creato appare in rosso e ci dice che il suo stato non è tracciato. Ciò significa che Git vede il file, ma non ne ha alcuna registrazione.

Digita git add test.txt per dire a Git di mettere in scena questo file, quindi digita di nuovo git status e Git dovrebbe dirti che è a conoscenza di un file modificato.

Impegnare file su Git

Ora che abbiamo aggiunto il nostro file, dobbiamo eseguirne il commit in modo che Git salvi lo stato del file. Possiamo farlo in una singola riga, senza aprire il nostro editor predefinito con il seguente comando.

git commit -m 'adding our first file'

Il flag -m dice a git che le parole tra virgolette singole sono il commento che accompagna il comando.

Ora il nostro repository contiene un singolo file con il suo stato salvato.

Crea una filiale

Il vero potere di Git arriva quando inizi a dedicarti alla ramificazione. Diciamo che vuoi scrivere un mucchio nel tuo file test.txt ma non sei sicuro se finirai per mantenerlo e vuoi assicurarti di poter tornare al file attualmente vuoto. Possiamo farlo con un ramo.

Per creare un ramo possiamo digitare git checkout -b new-branch . Questa è una scorciatoia per creare un ramo nello stesso momento in cui eseguiamo il checkout del ramo, ed è quello che uso ogni volta che devo creare un ramo.

Ora apri il nostro file test.txt , aggiungi del testo e salvalo. Quindi usa git add e git commit come sopra per salvare lo stato del file.

Quindi, digita git checkout master per tornare al ramo principale predefinito e quindi guarda di nuovo il contenuto del tuo file test.txt . Noterai che tutto il testo digitato è stato rimosso. Git eliminerebbe persino un nuovo file che si trovava solo su un ramo, sebbene ne tenga traccia, quindi non è andato.

Unisci un ramo

Ora, amiamo qualunque cosa abbiamo scritto nel nostro file, quindi integriamolo con il nostro ramo principale. Assicurati di essere sul ramo principale e digita git merge new-branch per integrare le modifiche.

Se guardi il contenuto di test.txt ora troverai le modifiche sul ramo principale proprio come le avevi lasciate.

Utilizzo di Git con WordPress

Sebbene l'esempio sopra sia estremamente semplice, è tutto ciò di cui hai bisogno per iniziare con Git nei tuoi progetti. Quindi parliamo esattamente di come ottenere un progetto WordPress usando Git.

La prima considerazione è quale livello nella gerarchia delle cartelle dovrebbe essere la radice del repository Git. Se stai creando un tema, puoi rendere la cartella del tema il tuo repository. La stessa logica si applica se stai creando un plugin.

Di solito lavoro contemporaneamente su temi e plugin, quindi uso spesso la cartella wp-content come posizione per il mio repository. Quando lo faccio, mi assicuro di ignorare la cartella dei caricamenti in modo da non aggiungere tutte le immagini e i file caricati al repository. ingombrano il repository e possono rallentare Git perché non è eccezionale per comprimere i file di immagine.

Se sto gestendo un intero flusso di lavoro di distribuzione, rendo la cartella principale di WordPress la posizione principale per il mio repository Git. Quindi mi assicuro di aggiungere wp-content/uploads e wp-config.php al mio file .gitignore . wp-config.php è specifico per ogni installazione di WordPress, quindi non voglio che venga distribuito su nessun'altra versione del file che farebbe smettere di funzionare il sito.

Puoi vedere una copia del file .gitignore che uso come punto di partenza per ogni progetto. Presuppone che tu stia utilizzando wp-content come root del tuo repository Git, quindi cambio alcuni dei modelli di ignora se sono alla radice di WordPress.

Git Applicazioni GUI

Anche se abbiamo trattato le nozioni di base tramite la riga di comando per Git, non tutti sono a proprio agio nella riga di comando, so che non lo ero quando ho iniziato a usare Git. Anche ora, occasionalmente voglio guardare una rappresentazione visiva di ciò che Git sta facendo prima di apportare modifiche alla mia configurazione.

Fortunatamente ci sono molti ottimi client GUI per Git che puoi usare, quindi evidenziamo alcuni.

Github Desktop (Windows/macOS)

Un ottimo punto di partenza mentre guardi i client della GUI Git è con l'applicazione Github Desktop.

Molti progetti open source utilizzano Github come repository di codice per la collaborazione e utilizzano il flusso Github standard per svolgere il proprio lavoro. Il client Github Desktop è stato creato per aiutarti a gestire questo flusso, quindi semplificherà la creazione di richieste pull.

Se non sei sicuro di cosa sia una richiesta pull, dai un'occhiata La documentazione di Github sulle richieste pull

Sfortunatamente per gli utenti Linux, non esiste un'applicazione Github Desktop ufficiale, ma esiste un fork di Github Desktop che verrà installato sui sistemi Linux.

Git Tower (Windows/macOS)

La GUI Git che uso è Git Tower. Git Tower è disponibile per macOS e Windows. Quando ho iniziato con Git, ho trovato molto più semplice risolvere i conflitti e vedere cosa c'era di diverso tra i file all'interno di questa GUI.

Copia di lavoro (iOS/iPadOS)

Se lavori principalmente da un iPad, come faccio io, dovresti guardare Copia di lavoro. Working Copy è un client Git completo che funziona con iOS e iPadOS. Presenta anche l'integrazione delle scorciatoie in modo da poter automatizzare parti del tuo flusso di lavoro Git.

Avvolgendo

Anche se oggi abbiamo coperto molto della tua conoscenza di Git, non è possibile che un singolo post sul blog possa essere esaustivo sull'argomento. Puoi continuare il tuo apprendimento con la documentazione della guida di Nexcess e queste eccellenti risorse.

  • Documentazione Git
  • Libro Pro Git
  • Lezione di Git di Laracast
  • Risorse esterne di Git

Usando Git per gestire i progetti dei tuoi clienti, ti risparmierai mal di testa poiché puoi annullare le modifiche o eliminare interi rami se non vuoi più il lavoro che hai fatto. Non più Ctrl + Z finché non pensi di essere tornato abbastanza indietro, Git terrà traccia di tutto per te.