Git e Github: una guida per principianti per principianti assoluti

Pubblicato: 2017-08-15

Nonostante quello che ci dicono la televisione e i film, la vita come sviluppatore di software non include stare seduti in una stanza buia, la nostra tastiera illuminata solo dal bagliore del monitor, il pensiero di interagire con un altro essere umano ripugnante. No, la vita da sviluppatore di software è sociale e collaborativa, a volte fino alla frustrazione. Ecco perché abbiamo git e Github.

Git è un software per il controllo della versione che semplifica la collaborazione con i compagni di squadra... una volta superata la curva di apprendimento iniziale. Può essere intimidatorio, ma è per questo che sono qui!

Cos'è Git?

Beh, non è solo il modo in cui noi meridionali scacciamo i furfanti dai nostri portici, te lo dico io.

Come ho detto sopra, Git è un software per il controllo della versione. È stato creato da Linus Torvalds, il tizio che ha inventato Linux. Non devi eseguire Linux per usare git: puoi usarlo anche su Windows e Mac.

Git ti consente di tenere facilmente traccia di ogni revisione che tu e il tuo team fate durante lo sviluppo del vostro software. Condividete tutti un repository di codice su cui si lavora in modo indipendente e poi si fonde di nuovo insieme. Inoltre, non è necessario essere sempre connessi perché il progetto viene salvato sia localmente su ciascuna macchina che in remoto (probabilmente su Github).

Git è speciale (e praticamente obbligatorio) perché puoi tornare a qualsiasi versione precedente del tuo codice, diramare e sviluppare una funzionalità specifica senza influenzare niente o chiunque altro e mantenere la sicurezza dalla corruzione dei dati a causa della sua natura distribuita.

Fornisce inoltre crittografia facilmente implementabile e compatibilità tra sistemi operativi, nonché flussi di lavoro asincroni e non lineari in modo che, ovunque ti trovi, puoi lavorare su alcuni aspetti del tuo progetto.

Fondamentalmente, se non stai usando git, stai programmando con una mano legata dietro la schiena.

Vocabolario richiesto

Quando inizi a usare git per la prima volta, può essere intimidatorio. Comandi e concetti possono sembrare totalmente estranei se non hai mai usato alcuna forma di controllo della versione in passato. Li raccoglierai molto velocemente, però.

Archivio:

Spesso indicato come repo . Un repository è la raccolta di file e cartelle che stai usando git per monitorare. Il repository è costituito dall'intera cronologia delle modifiche del tuo team al progetto. È la grande scatola in cui tu e il tuo team lanciate il vostro codice.

Github:

La soluzione di archiviazione remota più popolare per i repository git. Consente inoltre di impostare le autorizzazioni di accesso per i progetti, tenere traccia e inviare bug, accettare richieste di funzionalità, iscriversi alle notifiche del repository e utilizzare un'interfaccia grafica, anziché utilizzare la riga di comando. I repository predefiniti sono pubblici, ma gli account a pagamento possono avere account privati.

Commettere:

Pensa a questo come a salvare il tuo lavoro. Quando ti impegni in un repository, è come se stessi raccogliendo i file così come esistono in quel momento e mettendoli in una capsula del tempo. Il commit esisterà solo sul tuo computer locale finché non verrà inviato a un repository remoto.

Spingere:

Spingere è il pane per il burro dell'impegno. Il commit getta i tuoi file nella timecapsule e spingere è ciò che lancia la capsula nello spazio. Il push sta essenzialmente sincronizzando i tuoi commit sul cloud (di nuovo, probabilmente Github). Puoi anche inviare più commit contemporaneamente. Puoi lavorare offline, dedicare molto lavoro e poi trasferire tutto su Github quando torni nella civiltà con quel dolce, dolce wifi.

Ramo:

Puoi pensare al tuo repository git come un albero. Il tronco dell'albero, il software che entra in funzione, è chiamato Master Branch. È quello che va in diretta. I rami di quell'albero sono, beh, chiamati rami. Queste sono istanze separate del codice che deriva dalla codebase principale. Potresti diramarti per una singola funzionalità o una patch sperimentale. Con la ramificazione, puoi preservare l'integrità del software e avere un modo per ripristinare se fai qualcosa di totalmente pazzo. Ti consente anche di lavorare sul tuo compito senza inciampare nel modo in cui il tuo team (o loro nel tuo).

Unisci:

Quando un branch è ripulito, privo di bug (per quanto ne puoi dire, almeno) e pronto per diventare parte del codebase primario, verrà unito al ramo principale. La fusione è proprio come sembra: integrare due rami insieme. Qualsiasi codice nuovo o aggiornato diventerà una parte ufficiale del codebase. Chiunque si dirama dal punto di fusione avrà anche questo codice nel proprio ramo.

Clone:

La clonazione di un repository è praticamente esattamente come sembra. Prende l'intero repository online e ne fa una copia esatta sul tuo computer locale. Dovrai farlo per una serie di motivi, non ultimo dei quali iniziare nel bel mezzo di un progetto con un nuovo team, scambiare workstation o ricominciare da un repository danneggiato.

Forchetta:

Il fork è molto simile alla clonazione, solo che invece di creare un duplicato di un repository esistente sul tuo computer locale, ottieni un repository completamente nuovo di quel codice con il tuo nome. Questa funzionalità viene utilizzata principalmente per prendere una base di codice esistente e andare in una direzione completamente nuova, cosa che accade molto nel software open source; gli sviluppatori vedono un'idea di base che funziona, ma vogliono percorrere una strada diversa con essa. La biforcazione permette che ciò accada. Puoi anche giocare nel repository di un altro sviluppatore come se fosse la tua sandbox personale. E se fai qualcosa che pensi possa piacere, puoi fare una richiesta pull per unirlo.

Richiesta di estrazione:

Una richiesta pull è quando invii una richiesta per le modifiche che hai apportato (su un ramo o un fork) da estrarre (o unire) nel ramo principale del repository. Questo è il grande momento. Qui è dove avviene la magia. Se la richiesta pull viene approvata, avrai ufficialmente contribuito al software e Github mostrerà per sempre esattamente quello che hai fatto. Tuttavia, se la richiesta pull viene negata per qualsiasi motivo, il negatore sarà in grado di fornire un feedback sul motivo per cui la richiesta è stata respinta e su cosa puoi fare per farla accettare.

Per iniziare e comandi necessari

Non era poi così male, vero?

Destra. Ora che hai un'idea chiara di cosa sia git, è il momento di scavare e sporcarti le mani.

Dovrei cogliere l'occasione per notare, tuttavia, che presumo che tu stia utilizzando la riga di comando per interagire con git. Sicuramente ci sono client git grafici (e Github ti permette persino di fare praticamente tutto attraverso la sua interfaccia web), ma per gli scopi di questo post non ci preoccuperemo di loro. Farai una manciata di cose al di fuori del terminale, ma la riga di comando sarà la tua nuova migliore amica. Quindi è quello con cui stiamo andando anche noi.

Come installare Git

Git (probabilmente) non è stato installato sul tuo computer, quindi dobbiamo farlo lì. Fortunatamente, l'installazione di git è semplicissima, che tu sia su Linux, Mac o Windows.

Per Linux, apri il terminale e digita sudo apt-get install git-all (se sei in Ubuntu. In caso contrario, c'è un elenco di tutti i comandi di installazione del pacchetto Linux per qualsiasi altra distro su cui ti trovi.)

Su Windows, è altrettanto semplice. Scarica il programma di installazione ed eseguilo.

Su Mac, devi solo aprire il terminale e digitare git . Se git non è installato, vedrai questo:

Dopo aver fatto clic su Installa, sei a posto.

Vedere? Facilissimo!

Usando Git

Ecco dove inizia il divertimento. Ora che hai installato git, è il momento di... git-r-done! ahah! Ma è davvero il momento di scavare e imparare a iniziare a usare questo fantastico piccolo pezzo di magia da riga di comando. E quale posto migliore per iniziare se non Github?

Quindi vai oltre e registrati per il tuo nuovo account Github (o accedi se ne hai già uno, e sarò da te in un secondo).

Github è gratuito per i repository pubblici e puoi averne di privati ​​a un prezzo. (Cordiali saluti: puoi ottenere repository privati ​​gratuiti su Bitbucket, che è un posto meno conosciuto ma fantastico). Per la maggior parte, l'opzione gratuita su Github va bene per la maggior parte delle persone (e funziona anche come un curriculum vivente!), Ma alcuni clienti e datori di lavoro richiedono privacy e sicurezza, quindi è bene avere delle opzioni.

Dopodiché, sei pronto per configurare il tuo primo repository! Dopo aver verificato la tua email e tutte quelle cose divertenti.

Dovrai prima configurare il repository in Github. Puoi farlo sul tuo computer e poi caricarlo anche tu, ma è più semplice farlo prima sul web.

Nota che non mi preoccupo di una licenza o .gitignore in questo repository. Poiché questo non è un vero software, non devo preoccuparmene, ma nei casi di produzione, .gitignore ti consente, ovviamente, di ignorare i file all'interno della directory del tuo repository. E puoi leggere di quale licenza ha bisogno il tuo software qui.

Tuttavia, sto inizializzando il repository con un file README, che dovresti usare per conservare la documentazione di base per il progetto. Tendo a usarli come tracker per grandi cambiamenti, elenchi di cose da fare e diversi tipi di note mentre lavoro. Ma questo è su progetti personali. Diversi team leader avranno aspettative diverse.

Ora che il repository esiste su Github, è il momento di portarlo sul tuo computer locale tramite clonazione. A destra del tuo repository, appena sopra l'elenco dei file, vedrai un pulsante verde che dice "Clona o scarica". Cliccalo e vedrai questo:

Poiché stiamo clonando, possiamo ignorare tutto tranne la parte relativa alla clonazione con HTTPS. Non dovrai configurare nulla. Dovrai solo inserire il tuo nome utente e password quando premi.

Prima, però, devi impostare dove vuoi che il tuo repository risieda sul tuo computer locale. Apri il tuo terminale. (Utenti Windows, cerca e apri un programma chiamato Windows Powershell. Ti suggerisco anche di fare clic con il pulsante destro del mouse e selezionare "Esegui come amministratore".)

Il primo comando che devi imparare è ls . Questo elencherà tutto nella directory corrente. Per semplificare le cose, rendiamo semplicemente la nostra cartella dev live nella home directory del computer. Puoi usare mkdir dev per creare una directory chiamata dev . Abbastanza semplice, vero? Se scrivi di nuovo, vedrai la nuova cartella elencata.

Quindi vuoi spostarti nella tua nuova directory usando cd dev , che è il comando per cambiare directory . Vedi, la riga di comando non fa affatto paura! Se hai bisogno di tornare alla directory precedente, usa semplicemente cd .. .

Una volta che sei dentro la nuova cartella dev, è il momento di git questo partito iniziato. Eh eh eh.

Inizia copiando l'URL che appare dopo aver fatto clic sul pulsante verde "Clona o scarica" ​​su Github. Sarà simile a questo: https://github.com/bjk1337/myfirstrepo.git

Comandi per clonare un repository Git da Github

  • git clone https://github.com/bjk1337/myfirstrepo.git
  • ls
  • cd myfirstrepo – o come hai chiamato il tuo repository
  • ls

Dopodiché, il tuo terminale dovrebbe essere qualcosa del genere, mostrando il tuo file README che hai impostato su Github. Congratulazioni! Hai appena usato Git per la prima volta e ora sei pronto per iniziare a sviluppare.

il Nitty Gitty grintoso

Ora che hai un repository sulla tua macchina, devi imparare a usarlo. Quindi andiamo avanti un po' e diciamo che hai lavorato per un po' su un progetto interessante e che hai alcuni file nella directory. È tempo di impegnarsi e spingerli a Github.

Aggiunta e commit in un repository Git

  • git status – Questo comando ti mostrerà quali file non sono stati aggiunti all'elenco per il prossimo commit. Nella maggior parte delle app del terminale, i file non aggiunti/aggiunti saranno rispettivamente di colore rosso/verde.
  • git add. – aggiungendo un . alla fine del comando, stai dicendo a git di includere tutto nella directory. Se vuoi aggiungere un singolo file, usa semplicemente il suo nome file. Come functions.php .
  • git status – A seconda che tu abbia usato il . o il nome del file, qualunque cosa tu abbia aggiunto dovrebbe essere verde ora.
  • git commit -m "aggiungi tre file vuoti" - Quando commetti questi file, dovresti anche lasciare un messaggio veloce per far sapere ai tuoi compagni di squadra (o al tuo futuro sé) esattamente cosa c'era in quel commit. Le convenzioni git standard dicono che dovresti essere il più conciso e specifico possibile e iniziare il messaggio usando il tempo presente del verbo.

Il tuo terminale conterrà molto testo ora e dovrebbe apparire così. Ma ora sai cosa significa tutto questo!

Spingere su un repository Git remoto come Github

Spingere su un repository è ancora più semplice.

  • git status – Dovresti sempre controllare per vedere come appaiono le cose e per assicurarti di essere nel ramo corretto.
  • git push
  • Inserisci il tuo nome utente e password per Github : tieni presente che il campo della password rimarrà vuoto, anche durante la digitazione. Va bene. Basta digitarlo e premere invio. Se hai utilizzato SSH, salterai questo passaggio.

Puoi andare al tuo account Github e controllare il repository, e i tuoi file saranno lì, i messaggi di commit e tutto il resto!

Ramificazione e unione

Gli ultimi due comandi con cui devi avere familiarità riguardano la ramificazione e l'unione. Come ho detto sopra, lavorare su un ramo mantiene al sicuro la base di codice principale e, una volta che le modifiche sono tutte dandy, puoi unire tutto di nuovo insieme.

Possono essere un po 'complicati, quindi potrebbe essere necessario un po' di stimolo per farli giocare bene.

  • git checkout -b "branch1" – Questo comando creerà sia un nuovo ramo che ti intitola e ti scambierà come ramo di lavoro. Combina entrambi i comandi git checkout e git branch in una comoda riga di codice.
  • touch awesome.html – questo è solo un comando di riempimento per creare un nuovo file html che unirò di nuovo al master.
  • E come prima, git status, git add awesome.html, git commit -m "create awesome.html"
  • git status ti permetterà di vedere che tutto è come dovrebbe essere.

Se provi a spingerlo prima di unirti, riceverai un messaggio che ti informa che devi impostare l'origine del repository. Origin è una strana convenzione di denominazione per ciò che il tuo computer considera il repository remoto. Quindi, in pratica, gli stai solo dicendo che, sì, va bene inviare questo ramo a Github come ha fatto con il master. Ecco un buon thread su git origin da Stack Overflow.

Detto questo, ti dirà che è andato a branch1 -> branch1.

Puoi tornare al ramo principale con git checkout master (non c'è checkout -b questa volta perché lo usi solo alla creazione di un nuovo ramo, non allo scambio. Ho confuso i miei comandi nello screenshot qui sotto e ho provato git branch master Non è riuscito perché il master esisteva già.

  • git status – Come sempre.
  • git merge branch1 – Poiché tutto in quel ramo va bene, possiamo andare avanti e unire.
  • Se torniamo a git status , vedremo che siamo davanti a origin/master di 1 commit. Ciò significa che non abbiamo spinto tutte le modifiche che abbiamo apportato a Github.
  • git push per sincronizzare le cose!

Controlla il tuo account Github: vedrai che tutto ciò che hai fatto si riflette lì. Puoi vedere i diversi messaggi di commit, il numero di branch e commit che abbiamo fatto, così come tutti i contributori al repository e anche cosa hanno fatto.

E questo è tutto! Congratulazioni! Hai appena rivoluzionato il tuo flusso di lavoro git di base. Puoi fare cose molto, molto, molto più intricate di queste con git, ma questo è abbastanza vicino a quello che probabilmente userai su base giornaliera quando sei solo... all'inizio .

Oh, un'altra cosa!

Il Github Repo, myfirstrepo , che ho usato per questo articolo è ancora attivo . Sentiti libero di provarlo, giocarci, fork, clonarlo, o qualunque cosa pensi ti abitui a usare git. Divertiti! (E grazie per aver sopportato me e tutti i miei giochi di parole.)

Immagine in miniatura dell'articolo di MchlSkhrv / shutterstock.com