• Non ci sono risultati.

Controllo delle versioni con git

N/A
N/A
Protected

Academic year: 2021

Condividi "Controllo delle versioni con git"

Copied!
19
0
0

Testo completo

(1)

1

(2)

Controllo delle

versioni con git

(3)

git

• Nato dalla comunità degli sviluppatori di Linux

• Linus Torvalds, 2005

• Obiettivi iniziali:

‣ velocità

‣ supporto per lo sviluppo non lineare (migliaia di branch parallele)

‣ Completamente distribuito

‣ In grado di gestire progetti grandi e complessi (es, Linux) in maniera efficace

3

(4)

Alcune risorse

• Dalla linea di comando:

‣ git help <verb>

‣ git <verb> --help

‣ man git-<verb>

‣ <verb> è uno dei comandi di git (commit, add, config, ...)

• Libro online: http://git-scm.com/book

• Tutorial: http://schacon.github.com/git/gittutorial.html

• Git for computer scientists: http://eagain.net/articles/git-for- computer-scientists/

• Dispensa caricata sul sito del corso

(5)

Modello distribuito

• git utilizza un modello completamente distribuito

• le versioni sono identificate da un hash SHA-1

5

(6)

Snapshot

• Internamente, git crea degli snapshot del lavoro

• Basato sul concetto di “filesystem”

• Permette velocemente di portarsi avanti e indietro nel flusso

di lavoro

(7)

Aree di un progetto locale

• Un progetto locale ha tre aree

7

(8)

Ciclo di vita di un file

(9)

GitHub

• github.com è un sito che ospita copie di reposiroty git

• Utilizzato da molti progetti open source (anche dal Kernel Linux)

• Offre spazio gratuito per progetti open source

• Devo utilizzare github per usare git? No!

‣ git è un sistema di controllo delle versioni distribuito

9

(10)

Preparazione all'uso di git

• Imposta il nome utente e l'email con cui verranno “firmati” i commit

git config --global user.name “Bugs Bunny”

git config --global user.email bugs@gmail.com

• Si può utilizzare git config -list per verificare la loro corretta impostazione

• Omettengo il flag --global si possono impostare variabili di

configurazione locali per ciascun repository

(11)

Creare un repository locale

• Ci sono due scenari principali:

‣ Voglio clonare un repository già esistente da un server remoto:

$ git clone <url> [local dir name]

‣ Voglio creare da zero un nuovo repository:

$ git init

$ git add file1.py

$ git commit –m “initial project version”

11

(12)

Comandi di git

command description

git clone url [dir]

copy a git repository so you can add to it git add files adds file contents to the staging area git commit records a snapshot of the staging area

git status view the status of your files in the working directory and staging area

git diff

shows diff of what is staged and what is modified but unstaged

git help [command] get help info about a particular command

git pull fetch from a remote repo and try to merge into the current branch

git push push your new branches and data to a remote

repository

(13)

Commit di file

• La prima volta che aggiungiamo un file al repository, ed ogni volta che ne effettuiamo una modifica che vogliamo salvare,

dobbiamo aggiungerlo all'area di staging:

$ git add README.txt hello.java

• Questo comando crea uno snapshot della versione corrente

• Per spostare il file dall'area di staging all'interno del repository, dobbiamo effettuare l'operazione di commit:

git commit –m “Fixing bug #22”

• Attenzione: questi comandi operano unicamente sulla versione locale del repository!

13

(14)

Status e diff

• È possibile vedere lo stato attuale del repository locale:

$ git status

• Si può chiedere di mostrare cosa è stato modificato ma ancora non inserito nell'area di staging:

$ git diff

• Per mostrare le differenze nell'area di staging:

$ git diff --cached

(15)

Logs

• Si può far mostrare l'elenco delle modifiche che sono state effettuate nelle varie versioni:

$ git log

• Se si è interessati solo alle ultime 5 modifiche:

$ git log -5

15

(16)

Sincronizzare repository remoti

• Per recuperare da un repository remoto le ultime modifiche pubblicate:

$ git pull origin master

• Per pubblicare sul repository remoto i commit dal repository locale:

$ git push origin master

• Informazioni sul/sui repository remoti:

$ git remote -v

(17)

Branching

• Si possono creare versioni “multiple” di lavoro, chiamate branch

• Per creare una branch:

$ git branch <nome>

• Per mostrare tutte le branch locali:

$ git branch

• Per passare da una branch all'altra:

$ git checkout <nome>

• Per “fondere” insieme le branch:

$ git checkout master

$ git merge <name>

17

(18)

Branching model

(19)

Alcune risorse

• Dalla linea di comando [<verb> è uno dei comandi di git (commit, add, config, ...)]:

‣ git help <verb>

‣ git <verb> --help

‣ man git-<verb>

• Libro online: http://git-scm.com/book

• Tutorial:

http://schacon.github.com/git/gittutorial.html

• Git for computer scientists:

http://eagain.net/articles/git-for-computer- scientists/

• Dispensa caricata sul sito del corso

19

Riferimenti

Documenti correlati

Performing a diff Viewing file history Committing changes.

Question 3.3. Créez une nouvelle branche pour le développement à l’aide de git branch NOM. L’effet de la commande est de créer une nouvelle branche, nommée NOM, à partir de

Dans la copie de travail o` u vous avez cr´ e´ e et commit´ e le fichier description.txt, ex´ ecutez la commande.. $ git push

Dans la copie de travail o` u vous avez cr´ e´ e et commit´ e le fichier description.txt, ex´ ecutez la commande git push origin master 1.. Ex´ ecutez dans /tmp/nom-prenom la

・ If you are using Windows, the location of the calculator drive will depend on your Windows Version.. Use Windows Explorer to open the

For a complete opencv build, including libraries to open video files and/or external webcams, install the following before building opencv:.. $ sudo apt-get install

La sessione dal titolo “Modellazione idrogeologica applicata alla valutazione e gestione della risorsa idrica, del rischio idrogeologico e per la bonifica del danno ambientale”

Based on the results extracted from the table, it was found out that Expert Systems, Machine Learning and statistical methods are used for both diagnosis and prognosis. This may