Git Version Control sulla riga di comando per iOS Devs

È successo a tutti noi: cambiamo qualcosa nel nostro codice e all'improvviso tutto sembra "rotto". Questo è quando il controllo della versione è un vantaggio, se sai come usarlo. In questo tutorial, impareremo come usare Git dalla riga di comando.

Xcode e altri IDE moderni hanno opzioni di base per Git integrate nella loro interfaccia grafica, ma si ottiene solo il controllo ad alto livello del repository (repository Git) tramite la riga di comando. Se stai facendo codifica avanzata o gestione Git, è importante essere a tuo agio con la riga di comando. Se non hai mai usato la riga di comando in precedenza, potresti voler controllare il mio altro tutorial sull'argomento:

Informazioni sul controllo della versione

Prima di iniziare, dovremmo rivedere ciò che è esattamente il controllo della versione. UN Sistema di controllo della versione è una soluzione software che può facilmente salvare revisioni del codice e di altri dati in modo da poter tornare alle versioni precedenti, rivedere le modifiche apportate e condividere gli aggiornamenti con i collaboratori. 

Ci sono molti vantaggi e casi d'uso per il controllo della versione. Ad esempio, rivedendo le modifiche ("impegna") per il tuo progetto, puoi identificare chi ha scritto un particolare bit di codice e perché: puoi anche ripristinare tutte le modifiche riscontrate in errore o per interrompere la funzionalità.

Il sistema di controllo delle versioni più utilizzato oggi è Git, quindi è quello che vedremo in questo post. Sappi che esistono altri sistemi ampiamente usati, ad esempio, SVN e Mercurial. 

Termini e concetti chiave

  • deposito o pronti contro termine-contiene tutto il codice per un singolo progetto, insieme all'intera cronologia delle modifiche di ogni file.
  • directory di lavoro-quando modifichi il tuo codice, stai apportando modifiche alla tua directory di lavoro. Se si desidera salvare queste modifiche al repository, è necessario effettuare un commettere. Se tutte le modifiche nella directory di lavoro sono state registrate sul repository, la directory di lavoro è pulito.
  • commettere-un gruppo di modifiche ai file sorgente. Di solito, queste modifiche sono raggruppate in modo che ogni commit si riferisca a una singola correzione o funzionalità.
  • ramo-il lavoro su un progetto può essere organizzato in rami. Ciò consente a uno sviluppatore o un gruppo di sviluppatori di lavorare su una funzione, mentre un altro sviluppatore lavora su un'altra funzionalità. 
  • fondersi-porta i cambiamenti in due rami insieme. Spesso, questo può essere fatto automaticamente da Git, ma se ci sono conflitti, potresti dover dire manualmente a Git come unire i file.

Servizi di gestione dei depositi

Quando si utilizza il controllo della versione, si crea a deposito, o pronti contro termine, ed è più comune ospitare questo repository su a Servizio di gestione del repository. Ai fini di questo tutorial, non ospiteremo il nostro repository ovunque, quindi puoi concentrarti sull'effettivo utilizzo del controllo della versione. Se vuoi, però, puoi leggere su questi servizi di gestione dei repository e dovresti essere in grado di applicare questa conoscenza a loro, se lo desideri. 

Alcuni esempi di questi sono GitHub, Bitbucket, GitLab e Coding, e sono ampiamente utilizzati dagli sviluppatori di tutto il mondo. Io, e molti altri, uso GitHub perché ospita un numero enorme di progetti open-source. I repository GitHub sono pubblici per impostazione predefinita, ma è possibile creare repository privati ​​a pagamento mensile.

Iniziare

Creare un'applicazione

Per iniziare, dovrai creare una nuova applicazione in Xcode. Per questa app, puoi utilizzare qualsiasi modello che desideri e se hai un'app attuale con un repository Git, puoi usarla anche per questo tutorial.

Ecco come dovrebbe apparire l'IDE appena prima di creare finalmente il tuo progetto (quando devi decidere dove posizionare il progetto):

Assicurati che la scatola che dice Crea repository Git sul mio Mac è controllato, in quanto ciò garantirà che il tuo progetto avrà internamente il repository. Successivamente, se scegli di utilizzare un sistema di gestione del repository, sarai in grado di farlo Spingere tutto questo codice e ogni commettere che tu abbia mai fatto apparirà.

Aprire il terminale

Per accedere alla riga di comando, è necessario aprire il terminale. Puoi farlo in due modi. Puoi aprire Trampolino di lancio, e lì puoi trovare il terminale icona nel Altro cartella nella prima pagina di Launchpad. Oppure puoi colpire Comando-Space sulla tastiera e cerca terminale nel Riflettore.

Una volta aperto il terminale, dovresti vedere qualcosa di simile al seguente.

Questo è chiamato il "prompt dei comandi": vedrai la directory corrente, quindi il tuo nome utente seguito da a $.

Tutto ok! Ora sei pronto per imparare come utilizzare il controllo della versione sul terminale.

Cheat Sheet di Terminal Commands

Ecco alcuni dei comandi di base di cui ho scritto nel mio tutorial su come iniziare con Terminal. Dovrai conoscerli per poter utilizzare il terminale in modo efficace. 

Aiuto

  • Aiuto-come suggerisce il nome, è possibile digitare questo comando nel Terminale per ottenere un elenco di comandi diversi.
  • uomo -simile al comando precedente, questo comando ti dice esattamente cosa fa un comando (e ti fornisce tutta la documentazione) senza che tu debba cercare Google per questo.

Gestione dei file

  • ls-elenca tutti i contenuti nella directory corrente. Questo comando è utile se non vuoi utilizzare il Finder per sfogliare i file: puoi semplicemente elencarli usando questo comando nel tuo Terminale.
  • CD -questo comando è usato per cambiare directory. Se scrivi CD da solo, uscirai dalla directory corrente. Dopo aver usato ls (per vedere le directory), puoi scrivere il nome della directory che vuoi inserire.

Modifica delle preferenze

  • default -questo comando viene utilizzato per modificare le impostazioni di sistema predefinite, alcune delle quali non possono essere modificate senza utilizzare il terminale.
  • caffeinate-come suggerisce il nome, questo comando è usato per impedire al tuo Mac di oscurarsi, spegnersi o dormire. Per concludere, tutto ciò che devi fare è premere Control-C.

Modifica del testo

  • vim -Questo è uno dei miei preferiti. È possibile modificare i file di testo utilizzando il predefinito TextEdit (o qualsiasi editor basato su GUI), ma vim è fondamentalmente un editor di testo da riga di comando, cioè funziona interamente all'interno del terminale.

Networking

  • ping -questo comando consente di controllare il tempo di risposta del server di un URL o indirizzo IP specificato. Questo potrebbe non essere utile per ogni sviluppatore, ma è bello sapere.

Admin

  • sudo -un modo per ignorare i privilegi dell'utente e diventare un superutente del computer. Ti verrà richiesta una password amministratore quando la usi.

Diversi comandi Git

Ora che hai visto alcuni comandi base del terminale, impariamo le diverse cose che puoi fare con Git. Non li coprirò tutti, ma ti insegnerò i principali che utilizzerai nello sviluppo quotidiano. Se hai bisogno di ulteriori informazioni, puoi semplicemente correre aiuto nel tuo terminale per i dettagli, e se ciò non è sufficiente, per la documentazione completa, è possibile eseguire amico per ottenere la pagina di manuale.

Ecco come appaiono le pagine di aiuto:

Creare un progetto

  • git clone remote-repo-link-se vuoi clonare un repository da un servizio di gestione del repository, puoi usare questo comando insieme all'URL per ottenere una copia locale sul tuo computer.
  • git init-se stai creando un nuovo repository da una cartella esistente, puoi usare questo comando. Inizializzerà la cartella corrente come un nuovo repository. Di solito, lo faresti quando crei un progetto per la prima volta.

Commettere modifiche

  • stato git-ti dice quali file nella tua directory di lavoro sono stati modificati. Se hai cambiato i file, potrebbe essere il momento di fare un commit!
  • git commit -am "messaggio di commit utile"-quando hai apportato alcune modifiche al tuo progetto (ad esempio, quando hai completato una funzione semplice o hai apportato una correzione di bug), devi confermare la tua modifica. Assicurati di fornire un messaggio di commit chiaro e conciso, in quanto ciò aiuterà gli altri sviluppatori a capire cosa hai fatto e perché.
  • git aggiungi nome file o git add --all-se aggiungi un nuovo file al repository, dovrai aggiungerlo al repository prima di eseguirlo. Utilizzare il Inserisci comando. 

Repository Branches

  • git branch branch-name?-con questo comando, puoi elencare i rami attuali o crearne uno nuovo.
  • git merge branch-name-unire il ramo corrente con il ramo indicato. Questo combinerà il codice nel ramo corrente con quello indicato.
  • git checkout branch-name-passare al ramo indicato. Questo metterà semplicemente da parte il ramo corrente e renderà attivo l'altro ramo.

Sistemi di gestione del repository

  • spingere-aggiorna il repository nel sistema di gestione del repository. Dopo aver apportato le modifiche e verificato che il codice funzioni correttamente, puoi inserire il codice in modo che gli altri membri possano vedere il codice e trascinarlo.
  • tira fuori-aggiorna la copia di lavoro locale del repository per riflettere gli ultimi aggiornamenti che sono stati inviati al sistema di gestione del repository. È una buona idea farlo prima di apportare modifiche se stai lavorando a un team.

Questi sono alcuni dei comandi principali che userete nel controllo della versione per iniziare, ma prima di terminare questo tutorial, diamo un'occhiata ad alcuni di questi in profondità con il progetto Xcode che abbiamo creato in precedenza.

Esempio di utilizzo di Git con un progetto Xcode

Ora, diamo un'occhiata ad alcuni esempi su come utilizzare Git da riga di comando con il progetto Xcode che abbiamo creato in precedenza in questo tutorial. Nota che utilizzeremo i comandi del terminale sopra, quindi assicurati di continuare a consultarli o memorizzarli.

Navigazione verso la directory del progetto

Prima di iniziare, è necessario accedere alla directory del progetto utilizzando i comandi sopra menzionati (suggerimento: utilizzare il comando CD e ls comandi). Una volta che sei lì, corri ls e assicurati di avere qualcosa di simile a questo:

Ta-da! Ora sei nella directory del tuo progetto e sei pronto a fare tutto il necessario con il tuo progetto. Basta seguire mentre ci impegniamo e si ramificano.

Commettere

Il commit del tuo codice è la cosa che farai più spesso nella programmazione. Non appena apporti un cambiamento di lavoro, la migliore pratica è quella di impegnarlo con commenti dettagliati.

Fare un cambiamento

Per iniziare, apportare una modifica al progetto Xcode. Per il mio, aggiungerò semplicemente la seguente riga di codice fittizio nella mia viewDidLoad () metodo:

let foobar = "foo"

Ottenere lo stato

Dopo aver aggiunto (o sottratto) una o due righe di codice, sei pronto per controllare lo stato del tuo progetto. Per fare ciò, incolla il seguente comando (meno il $ prompt) nella finestra del terminale:

$ git status

Vedrai qualcosa di simile a questo:

Il file che hai modificato è evidenziato in rosso, che ti dice che ha modifiche non vincolate.

Aggiunta di file all'area di gestione temporanea

Se si desidera impegnare solo determinati file, è possibile farlo utilizzando una "area di gestione temporanea" in cui verranno impegnati solo i file. Per aggiungere tutti i file modificati all '"area di staging", tutto ciò che devi fare è eseguire la seguente riga di codice:

$ git add -A

Il -UN il flag che vedi significa che tutti i file che hai modificato verranno aggiunti (-UN è per tutti, e puoi anche scrivere git add --all). 

Per vedere che i file sono pronti per il commit, è sufficiente eseguire nuovamente quanto segue:

$ git status

Vedrai qualcosa di simile a questo:

Vedere? Lo stesso file che era rosso ora è verde, il che indica che l'hai preparato correttamente per il commit. 

Commettere il tuo codice

Infine, per eseguire finalmente il commit del codice, tutto ciò che devi fare è eseguire il seguente comando nel tuo terminale e tra le virgolette aggiungere un messaggio.

$ git commit -m "Il mio primissimo commit."

Il -m flag dice al terminale che aggiungerai un messaggio al tuo file, ed è molto importante essere chiari con questo messaggio. Questi messaggi sono fondamentali per tenere traccia delle modifiche al tuo progetto.

Ora hai fatto il tuo primo commit! Sei sulla strada giusta per rendere il tuo codice più facile e più sicuro.

filiali

La seconda cosa più comune che farai come sviluppatore è creare, unire e utilizzare i rami per risolvere il tuo codice e isolare le funzionalità prima di distribuirle ai clienti.

Creazione di un nuovo ramo

Per impostazione predefinita, ci si trova in quello che chiamiamo il ramo "master". Questa è la branca principale alla quale, alla fine, dovrebbe succedere di tutto. La migliore pratica, in particolare quella di lavorare con una squadra, è quella di lavorare su nuove importanti funzionalità nelle proprie filiali, che saranno poi riunite in master una volta completate..

Per esercitarti a lavorare con i rami, creiamo un nuovo ramo. Per fare ciò, eseguire il seguente comando:

$ git branch my-first-branch

Puoi nominare il ramo come preferisci. 

Per vedere il nuovo ramo, puoi digitare:

$ git branch

Quando esegui quel comando, vedrai qualcosa di simile a questo:

Si noti che è possibile vedere due rami: maestromy-prima-branch (o qualunque sia il nome del tuo ramo). Inoltre, vedrai che c'è un asterisco vicino a maestro filiale, che indica che ci si trova attualmente in quella filiale.

Verifica di un ramo corrente

Se è necessario passare a un altro ramo esistente, sarà necessario check-out quel ramo. Quando lo fai, stai lasciando il ramo attuale e tutto il suo codice rimarrà intatto (insieme alle tue modifiche locali), ma la tua directory di lavoro verrà popolata con il codice dal ramo che hai controllato.

Provalo con il seguente comando:

$ git checkout mio-primo-ramo

Dovresti ottenere una conferma che assomigli a questo:

Ora sei passato a questo ramo e dovrebbe essere una lavagna pulita. Per confermare questo, corri stato git per verificare se ci sono dei file modificati. 

Unione di rami

Dopo aver completato le modifiche, normalmente si unirà il ramo al ramo principale. Non abbiamo ancora apportato alcuna modifica, quindi facciamolo ora prima di unire i due rami.

Apporta un'altra modifica al progetto Xcode. Per il mio, aggiungerò semplicemente la seguente riga di codice fittizio nella mia viewDidLoad () metodo:

lascia gooey = "fooey"

Puoi apportare qualsiasi modifica che ti piace. Assicurati di sapere quale file e quali modifiche hai apportato.

Al termine, esegui nuovamente la seguente riga di codice:

$ git status

Ora dovresti vedere il nome del file in rosso e dovrai impegnarti prima di unire questa modifica al tuo ramo principale. Confido che tu sappia come farlo, quindi passiamo al prossimo passo. Verifica che il commit abbia avuto successo stato git.

A questo punto, dovresti aver impegnato il codice, quindi prepariamoci a unire i due rami. Innanzitutto, esegui il seguente comando:

$ git checkout master

Questo comando passa a maestro filiale per prepararsi a fondersi con l'altro ramo che abbiamo creato. Infine, per unire, eseguire il seguente comando:

$ git unire il mio primo ramo

Dovresti ricevere una conferma simile a questa:

Ora i tuoi cambiamenti dal ramo della funzione sono stati riuniti in master. Se il ramo master è cambiato da quando è stato creato il ramo, Git proverà a combinare automaticamente le modifiche del ramo delle caratteristiche con il master. Se non può farlo automaticamente, ti chiederà di risolvere manualmente eventuali conflitti.

Ora sai come unire i rami, crearli e passare da uno all'altro utilizzando solo il Terminale!

Conclusione

Come vedi, non è troppo difficile eseguire il controllo della versione con il tuo progetto, e le ricompense valgono la pena. Il controllo della versione è una best practice di sviluppo fondamentale e dovresti averne familiarità se vuoi lavorare in un contesto professionale. 

Spero che questo post ti abbia dato la sicurezza di utilizzare il controllo della versione su base giornaliera. Se vuoi saperne di più su Git, guarda alcuni dei nostri video didattici animati qui su Envato Tuts+.