Skip to content

Modulo 11 — GitHub: basi

GitHub è una piattaforma di hosting per repository Git: puoi caricare i tuoi repo, accedervi da qualunque posto e condividerli con chiunque. In più offre funzioni di collaborazione non native di Git (issue, pull request, profili, …).

| | Git | GitHub | | --- | --- | | Software o servizio | Software locale di version control | Servizio cloud che ospita repo Git | | Account | Non serve | Serve | | Internet | Non serve | Serve | | Indipendenza | Si usa senza GitHub | Ha alternative: GitLab, Bitbucket, Gerrit… |

  • Popolarità: fondato nel 2008, è l’host di codice più grande del mondo (40+ milioni di utenti e 190+ milioni di repository nel 2020).
  • Gratuito: il tier Free offre repo pubblici e privati illimitati e collaboratori illimitati (i tier a pagamento sono Team/Enterprise).
  • Collaborazione: imprescindibile appena il progetto coinvolge più persone.
  • Open source: è LA casa dei progetti open (React, Swift, …). Per contribuire servono le basi di GitHub.
  • Visibilità: il profilo funziona da curriculum; molti datori di lavoro lo consultano. Contribuire a progetti popolari dà visibilità.
  • Aggiornamento: seguire i progetti che usi su GitHub è il modo migliore per stare al passo con modifiche e decisioni.
Terminal window
git clone <url>

⚠️ Non essere dentro un repository quando esegui il clone!

Il comando recupera tutti i file del progetto e l’intera storia Git, inizializzando un repository locale completo.

  • Chiunque può clonare un repo pubblico: non serve essere owner o collaboratore, basta l’URL.
  • Spingere le proprie modifiche sul repo è un’altra storia: serve il permesso!
  • clone è un comando Git standard: non è legato a GitHub, funziona con repository ospitati ovunque.

Per certe operazioni (es. push) serve autenticarsi. Senza SSH, il terminale chiede email e password di GitHub a ogni push. Generando e configurando una chiave SSH ci si collega senza credenziali manuali (GitHub offre una guida per la configurazione).

  1. Crea un repo (vuoto) su GitHub.
  2. Collega il repo locale (aggiungi un remote).
  3. Pusha le modifiche.
  1. Crea il repo su GitHub.
  2. Clonalo sul tuo computer (il remoto viene configurato in automatico).
  3. Lavora e committa in locale.
  4. Pusha su GitHub.

Prima di pushare, Git deve conoscere la destinazione: in gergo, un remote. Un remote è essenzialmente un URL dove vive un repository ospitato.

Terminal window
git remote # elenco nomi
git remote -v # verbose: nomi + URL

Un remote è una coppia label + URL:

Terminal window
git remote add origin https://github.com/utente/repo.git

“Git: d’ora in poi, quando dico origin intendo questo URL.”

origin è solo una convenzione, non ha poteri speciali. Quando cloni, il remote di default viene chiamato origin — e quasi nessuno lo rinomina.

Terminal window
git remote rename <vecchio> <nuovo>
git remote remove <nome>

Nota: aggiungere un remote non comunica con GitHub — è solo un segnalibro.

Terminal window
git push <remote> <branch>
git push origin master # pusha il branch master sul remote origin
git push origin newfeature # pusha il branch newfeature

Dopo nuovi commit locali, il repo su GitHub non sa nulla: per condividerli va ripushato il branch.

  1. Crea un repo vuoto su GitHub.
  2. Copia l’URL del repo.
  3. Aggiungi il remote al repo locale con quell’URL.
  4. Pusha.
Workspace ──add──▶ Staging (index) ──commit──▶ Repository locale ──push──▶ Remote repository
◀────────────────────── pull / fetch ──────────────────────────