Luca Ottaviano. Everyday Git



Похожие документы
Server Galileo.

Tecnologie Open Source. Subversion

Corso Git Riccardo Binetti 22 Ottobre Riccardo Binetti Corso Git Ottobre / 38

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A.

Gestione della configurazione del software

Alma Mater Studiorum Università di Bologna. Controllo di versione. S. Golovchenko (UNIBO) INGEGNERIA DEI SISTEMI SOFTWARE / 18

Programmazione Java Avanzata

Breve guida all'utilizzo di TortoiseSVN

III.2 Come condividere risultati

Sistemi per il controllo versione del software (VCS)

Luca Ottaviano. Ottimizzare applicazioni Qt Gui. Firenze, 8 luglio 2013

Fabio Zanasi. 12 maggio 2010

Introduzione al Configura1on & Source Management. Ingegneria del So-ware e Lab. Università di Modena e Reggio Emilia Do<.

Alla scoperta della nuova interfaccia di Office 2010

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

Guida informatica per l associazione #IDEA

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

Strumenti per lo sviluppo software in comunità

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per utenti singoli)

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per utenti singoli)

Eclipse e Subversion

DRUPAL CONTINUOUS INTEGRATION. Parte I - Introduzione

INSTALLARE L AMBIENTE DI SVILUPPO PER JOOMLA 2.5


Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Guida Rapida all uso del License Manager di ROCKEY4Smart (V )

Office 2007 Lezione 08

MIGRAZIONE SERVER DI POSTA ELETTRONICA

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

Esercizi su. Funzioni

Comprendere Git Concettualmente

1) GESTIONE DELLE POSTAZIONI REMOTE

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere

Dropbox. Quando qualcuno ci invita a condivide con noi una cartella, veniamo avvisati via mail.

SPRING SQ COMUNICAZIONE OPERAZIONI IVA NON INFERIORI A 3000 EURO PER L ANNO 2011

Guida Sintetica Portale Clienti Sportello

Ripristino di AdmiCash su un nuovo PC o sistema operativo

MANUALE DROPBOX. Sintesi dei passi da seguire per attivare ed utilizzare le cartelle online di Dropbox:

Preparazione di una immagine di Windows XP per la distribuzione

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Pillole di Bazaar. user manual

Impara a usare Microsoft DCCN in quattro semplici passaggi. Iscriversi al servizio è un operazione veramente semplice e richiede pochi minuti:

ROM Upgrade Utility (RUU) Prima dell aggiornamento fare attenzione se

Il nuovo Attestato di Prestazione Energetica

C++ E QT, BINOMIO PERFETTO

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

SISTEMA AFFILIAZIONE E TESSERAMENTO MANUALE UTENTE

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

GESTIRE UN LIONS CLUB

APP SECURKEYPAD ANDROID Manuale Edizione 1.0

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per utenti singoli)

D R O P B O X COS È DROPBOX:

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

MySTAR Istruzioni portale clienti STAR Italia rev. 0

USE IMPROVE EVANGELIZE HOT SUMMER ZFS. Luca Morettoni

Sistemi software di collaborazione in ambito open source

BDCC : Guida rapida all utilizzo

Indice GAMMA. Guida utente

Cimini Simonelli - Testa

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

FarStone RestoreIT 2014 Manuale Utente

Gestione assistenza. Servizio di PEC. Impostazioni di Mozilla Thunderbird

Manuale SeleFax ClientWeb Versione 2.0

MANUALEDIUTILIZZO MODULO CRM POSTVENDITA

[Sistemi sw di collaborazione] in ambito open source

Configurare Outlook Express

Guida al primo accesso

AT1542C - CED - Tablet offline - manuale utente

1. Il Client Skype for Business

IMPORT EXPORT CONTABILITA GENERALE

Guida alla registrazione on-line di un NovaSun Log

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

COMUNI-CHIAMO S.R.L. Via San Martino n. 26/1- Monte San Pietro P.IVA, C.F. e numero di iscrizione alla Camera di Commercio di Bologna

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

Network Topology. Configurazione HA USG300

AGGIORNAMENTO PROCEDURA TY-TERMINALINO

L ACQUISIZIONE E LA GESTIONE DEI DOCUMENTI ELETTRONICI

Approfondimento: Migrazione dei database e backup della posta

Strumenti per la gestione della configurazione del software

Invio SMS. DM Board ICS Invio SMS

Surap2.0 - PROGETTO DI CONSOLIDAMENTO DEL SISTEMA REGIONALE TUTORIAL OPERATORE SUAP SUAP

Guida alla Navigazione e Utilizzo dell Area Fattura PA

Workland CRM. Workland CRM Rel /11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX

Il pacchetto contiene sia l ambiente di sviluppo sia i driver per la scheda.

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

Questa guida è stata redatta per gli insegnanti amministratori che entrano in TwinSpace per la prima volta. Vi aiuterà a:

Транскрипт:

Luca Ottaviano Everyday Git Usare Git per lo sviluppo embedded Firenze, 24 settembre 2012

Chi sono Luca Ottaviano lottaviano@develer.com @lucaotta Sviluppatore su sistemi embedded presso Develer Qt certified developer Sviluppatore Python

Sistemi di controllo revisione Wikipedia: il controllo versione è la gestione di versioni multiple di un insieme di informazioni Repository Struttura dati che mantiene file, directory Ogni cambiamento tracciato nella storia si chiama revisione (commit) Working copy Copia locale del repository ad una certa revisione

Operazioni principali Checkout Crea una working copy locale di un repository Update Aggiorna la working copy all'ultima versione sul repository Revert Riporta un file nella working copy alla versione del repository

Operazioni principali (2) Commit Salva i cambiamenti nel repository Devono essere atomici, cioè implementare una sola funzionalità Bisect Ricerca binaria del commit errato a partire dall'ultima versione funzionante Tutti i commit devono essere atomici Codice sempre compilabile!

Sistemi di controllo versione popolari CVS Storia rappresentata come delta Granularità al file SVN Storia rappresentata come delta Granularità: directory Checkout parziali Sistemi centralizzati

Git: sistema di controllo versione distribuito Distribuito: ogni client ha l'intera storia del progetto Offline: tutte (o quasi) le operazioni non richiedono collegamento al server Veloce: tutte le operazioni sono fatte in locale (eccetto gli update) Ridondato: non c'è un singolo punto di fallimento Sicuro: non si può modificare la storia senza che qualcuno se ne accorga Bisect nativo

Git: operazioni principali Checkout git pull oppure git checkout Git clone Update Git pull git commit -a + git push Commit Git commit -a Git push L'operazione di revert si fa con git checkout

Il metodo migliore per imparare git Flickr: pasukaru76

Flusso di lavoro (1) Lavora con snapshot della working copy Salva lo stato della working copy e pochi altri metadati I file non modificati sono riferimenti allo snapshot precedente

Flusso di lavoro (2) Si fanno modifiche ai file Si aggiungono i file alla staging area Si effettua un commit Stati di un file Unstaged Staged Committed

Commit Snapshot della working copy ad un certo istante + metadati (autore, messaggio, data) Può avere zero, uno o due commit padri Identificato da un hash di 40 byte (SHA-1)

Checkout Riporta i file della working copy allo stato in cui erano quando è stato fatto il commit Può aggiungere e rimuovere file Non funziona se ci sono modifiche locali ai file Sintassi: $ git checkout f5aa747586ec2 # Ritorna allo stato di testing branch # (fra poco vediamo i branch) $ git checkout testing branch

Branch È un puntatore ad un commit Il branch di default è 'master' Il puntatore si sposta automaticamente in avanti quando si fa un commit

Repository remoti Scaricare un repository remoto: git clone Perchè 'clone'? Questo aggiunge un 'remote', cioè un altro repository git Il remote di default si chiama 'origin' $ git clone git@github.com:develersrl/bertos.git Cloning into bertos... remote: Counting objects: 35251, done. remote: Compressing objects: 100% (7106/7106), done. remote: Total 35251 (delta 27927), reused 35251 (delta 27927) Receiving objects: 100% (35251/35251), 7.89 MiB 1.32 MiB/s, done. Resolving deltas: 100% (27927/27927), done.

Repository remoti (2) I branch remoti sono in sola lettura Per fare modifiche si deve creare un branch locale Di default viene scaricato solo il branch 'master' Altri branch vanno aggiunti a mano $ git branch a * master remotes/origin/master remotes/origin/testing $ git checkout t origin/testing Branch testing set up to track remote branch testing from origin. Switched to a new branch 'testing'

Come aggiornare la copia locale git pull: riceve le modifiche dal repository remoto In realtà fa fetch e merge git push: invia le modifiche al repository remoto Non funziona se il branch remoto è andato avanti

Git senza un server remoto Si può creare un repository locale per lavorare da soli Utile per progetti personali, script etc. # entro nella directory con i sorgenti di un progetto $ cd project $ git init. $ git commit a m Primo commit # Fatto! Adesso ho un repository git funzionante! # Faccio delle modifiche... $ vim bar.c #...e salvo i cambiamenti $ git add bar.c $ git commit m Fix bug

Gestione dei branch # creare un branch $ git branch testing # creare e spostarsi sul branch $ git checkout b testing

Gestione dei branch (2) # modifica di un file $ vim foo.c # commit $ git commit a m Useful stuff # qual è la situazione?

Gestione dei branch (3) $ git checkout master # a cosa punta HEAD?

Gestione dei branch (4) # cosa succede se faccio un commit adesso? $ vim bar.c $ git commit a m Other changes

Merge Unione di due branch, si crea un commit con due padri Ricerca automatica del migliore antenato comune (Eventuale) risoluzione dei conflitti

Come ricevere aggiornamenti (advanced) git fetch origin: scarica i nuovi commit da origin git merge origin/master: integra le modifiche nel nostro branch

Come inviare i commit (advanced) Il comando 'push' aggiorna i branch remoti Non funziona se il branch remoto è andato avanti Bisogna fare 'fetch' e 'merge' prima di riprovarci Non si può distruggere il lavoro di altri git push <repo> <mio_branch> git push <repo> <mio_branch>:<branch_remoto>

Let's Talk office +39 055 3984627 (218) e-mail lottaviano@develer.com web www.develer.com twitter @lucaotta Credits Le immagini sono prese dal libro Pro Git http://git-scm.com/book