Autore Topic: Git (distributed version control and source code management system)  (Letto 1756 volte)

Offline dinolib

  • *
  • Post: 3226
  • Reputazione: 110
    • Mostra profilo
Visto che gestendo (o alle volte usando) CCR capita spesso di imbattersi in git, mi sembvra carino postare un link ad una nuova guida che ritendo utile:

http://learnxinyminutes.com/docs/git/

Per chi volesse produrre una traduzione di quanto sopra linkato ed inserirla in questa guida (al momento praticamente vuota): sei il benvenuto!  ;D

Offline Dax

  • *
  • Post: 24
  • Reputazione: 13
  • KDE 4 Ever!
    • Mostra profilo
Re:Git (distributed version control and source code management system)
« Risposta #1 il: 23 Luglio 2013 ore 18:04 »
E' la prima traduzione che faccio, spero sia chiara  :)



Traduzione in italiano di: http://learnxinyminutes.com/docs/git/

Git è un sistema software di controllo di versione distribuito.
Funziona eseguendo una serie di "istantenee" di un progetto fornendo funzionalità di versioning e gestione del codice sorgente; è molto ultile perchè si ha una “memoria storica” delle modifiche fatte su un codice sorgente.


Concetti sul “Versioning”

Cos'è un sistema di controllo di versione?
Un sistema di controllo di versione è un sistema che registra i cambiamenti di uno o più file nel tempo.

Versioning Centralizzato VS Versioning Distribuito
  • Un sistema di versioning centralizzato si concentra sulla sincronizzazione, tracciatura e salvataggio dei file.
  • Un sistema di versioning distribuito si concentra sulla condivisione delle modifiche, ognuna delle quali ha un ID univoco.
  • Un sistema di versioning distribuito non ha una struttura predefinita: con Git puoi avere un sistema di gestione simile ad SVN, oppure centralizzato.
Perchè usare Git?
  • Perchè puoi lavorare offline.
  • Puoi collaborare facilmente con altri sviluppatori.
  • E' facile creare un proprio ramo di sviluppo (Branch).
  • E' facile anche applicare le modifiche verso un'altro ramo di sviluppo (Merge).
  • E' veloce.
  • E' flessibile.

Architettura di Git

Repository
Un repository è un insieme di file, cartelle, log storici, commit e HEAD.
Immagina Git come una struttura dati per il codice sorgente con l'aggiunta di informazioni di storico e molte altre cose.
Un repository Git include la cartella “.git” ed il Working tree.

La cartella .git (componente del Repository)
La cartella .git contiene tutte le configurazioni, i log, i branch, l'HEAD e molto altro ancora.

Il Working Tree (componente del Repository)
Essenzialmente, il Working Tree rappresenta cartelle e file che formano il repository.

Indice (componente della cartella .git)
In Git, l'indice è la “Staging Area”, ovvero è un layer che separa il Working Tree dal repository, questo da agli sviluppatori più flessibilità per la gestione di quello che viene inviato al repository.

Commit
Un Commit è l'istantanea di uno o più cambiamenti o delle modifiche eseguite sul Working Tree. Per esempio, se aggiungi 5 file e ne rimuovi 2, queste modifiche verranno mantenute in un commit, quest'ultima può essere spedita facoltativamente verso altri repository.

Branch
Essenzialmente un branch è un riferimento verso l'ultimo commit che è stato fatto. Quando poi, verrà fatto il commit di un branch, automaticamente quest'ultimo si riferirà al commit più recente.

HEAD e head (componenti della cartella .git)
HEAD è un riferimento al branch corrente. Un repository può avere un solo HEAD attivo, invece, head è un puntatore che può riferirsi a qualunque commit; un repository può avere qualunque numero di heads.


Comandi

init
Crea un repository vuoto, tutte le informazioni del repository verranno salvate in una cartella chiamata “.git” (che si troverà all'interno del repository).
Codice: [Seleziona]
git init

config
Gestisce le impostazioni, che siano del repository, del sistema oppure impostazioni globali.
Codice: [Seleziona]
# Stampa e assegna qualche variable globale
$ git config --global user.email
$ git config --global user.name

$ git config --global user.email “MyEmail@Zoho.com”
$ git config --global user.name “My Name”

help
Questo comando può dare informazioni molto dettagliate per ogni comando, oppure può essere usata semplicemente come guida rapida.
Codice: [Seleziona]
# Visualizza i comandi disponibili
$ git help

# Visualiza TUTTI i comandi disponibili
$ git help -a

# Sottocomandi specifici per “help”
$ git help <sottocomando>
$ git help add
$ git help commit
$ git help init

status
Visualizza le differenze tra il file indice (ovvero la tua Working Copy, o Repository) ed il commit dell'HEAD corrente.
Codice: [Seleziona]
# Visualizza il branch, file non tracciati, modifiche e altre differenze
$ git status

# Per conoscere altri sottocomandi di “git status”
$ git help status

add
Questo comando si usa per aggiungere files al Working Tree, Directory oppure al Repository.
Se invii questo comando, ma non aggiungi nessun file, non verrà creato nessun commit.
Codice: [Seleziona]
# Aggiunge un file alla directory corrente
$ git add HelloWorld.java

# Aggiunge un file in una sottocartella
$ git add /path/to/file/HelloWorld.c

# Supporto per le Espressioni Regolari
$ git add ./*.java

branch
Gestisce i branch: con questo comando è possibile visualizzare, modificare, creare o cancellare i branch di un repository.
Codice: [Seleziona]
# Visualizza branch esistenti e remoti
$ git branch -a

# Crea un nuovo Branch
$ git branch ilMioBranch

# Cancella un Branch
$ git branch -d ilMioBranch

# Rinomina un branch
$ git branch -m <vecchio_nome> <nuovo_nome>
$ git branch -m ilMioBranch ilMioNuovoBranch

# Modifica la descrizione di un branch
$ git branch ilMioBranch --edit-description

checkout
Aggiorna tutti i file nel Working Tree per eguagliare la versione nell'indice o nell'albero specificato.
Codice: [Seleziona]
# Esegue il checkout del repo (per default, usa il branch “master”)
$ git checkout

# Esegue il checkout del branch specificato.
$ git checkout -b branchName

clone
Clona o copia un repository esistente in una nuova directory e aggiunge il tracking dei branch remoti per ogni branch nel repository clonato (che consente di quindi l'invio delle modifiche in un branch remoto).
Codice: [Seleziona]
# Clona learnxinyminutes-docs
$ git clone https://github.com/adambard/learnxinyminutes-docs.git

commit
Deposita il contenuto dell'indice in un nuovo “commit”, quest'ultimo contiene le modifiche fatte ed il messaggio creato dall'utente.
Codice: [Seleziona]
# Esegue il commit con un messaggio
$ git commit -m “Added multiplyNumbers() function to HelloWorld.c”

grep
Questo comando permette la ricerca in un repository.
Codice: [Seleziona]
# Ringrazio a Travis Jeffery per questi comandi
# Visualizza i numeri di riga nei risultati
$ git config --global grep.lineNumber true

# Produce risultati più leggibili, raggruppandoli
$ git config --global alias.g “grep --break --heading --line-number”

# Cerca “variableName” in tutti i file Java
$ git grep 'variableName' – '*.java'

# Cerca una riga che contiene “arrayListName” e, “add” oppure “remove”
$ gut grep -e 'arrayListName' --and \( -e add -e remove \)

log
Visualizza i commit di un repository.
Codice: [Seleziona]
# Visualizza tutti i commits
$ git log

# Visualizza X commits
$ git log -n 10

# Visualizza solo i commit che hanno fatto dei “merge”
$ git log --merges

merge
Unisce le modifiche dei commit esterni, nel branch corrente.
Codice: [Seleziona]
# Unisce il branch specificato in quello corrente
$ git merge branchName

# Genera sempre un merge commit quando unisci
$ git merge --no-ff branchName

mv
Rinomina o sposta un file.
Codice: [Seleziona]
# Rinomina un file
$ git mv HelloWorld.c HelloNewWorld.c

# Sposta un file
$ git mb HelloWorld.c ./new/path/HelloWorld.c

# Forza il cambio del nome di un file
# Se un file esiste, verrà sovrascritto

git mv -f myFile existingFile

pull
Scarica file e cartelle da un repository e le unisce in un altro branch.
Codice: [Seleziona]
# Aggiorna il repository locale, unendo le nuove modifiche
# dal branch “origin” a quello “master”
# git pull <remote> <branch>

$ git pull origin master

push
Invia ed unisce le modifiche da un branch locale ad uno remoto.
Codice: [Seleziona]
# Aggiorna il repository remoto, unendo le nuove modifiche
# dal branch “origin” a quello “master”
# git push <remote> <branch>

$ git push origin master

rebase (questo comando va usato con cautela)
Prende tutte le modifiche che sono state inviate in un branch e le riesegue in un altro.
Non eseguire il “rebase” dei commits che hai inviato in un repository pubblico.
Codice: [Seleziona]
# Esegue il rebase di experimentBranch in master
# git rebase <baseBranch> <topicBranch>

$ git push master oldTest

reset
Esegue il reset dell'HEAD corrente allo stato specificato.
Questo consente di annullare tutti i merge, pull, commit, file aggiunti e molto altro.
E' un comando utilissimo, ma può essere anche molto pericoloso se non si è consapevoli delle conseguenze.
Codice: [Seleziona]
# Esegue il reset della Staging Area per eguagliare l'ultimo commit (non modifica le directory)
$ git reset

# Esegue il reset della Staging Area per eguagliare l'ultimo commit e sovrascrive la Working Directory
$ git reset --hard

# Porta il branch corrente al commit specificato (non modifica le directory)
$ git reset 31f2bb1

# Porta il branch corrente al commit specificato eguagliando anche la Working Directory (elimina le modifiche non salvate e quelle dopo il commit specificato)
$ git reset --hrd 31f2bb1

rm
E' il comando opposto a git add: rimuove i file dal Working Tree.
Codice: [Seleziona]
# Rimuovi HelloWorld.c
$ git rm HelloWorld.c

# Rimuove un file da una sottocartella
$ git rm /path/to/the/file/HelloWorld.c

Offline alex

  • *
  • Post: 192
  • Reputazione: 4
    • Mostra profilo
Re:Git (distributed version control and source code management system)
« Risposta #2 il: 24 Luglio 2013 ore 09:35 »
Mi sembra un ottimo lavoro, +1 strameritato  :beer:

 

Template by Homey | Sito ufficiale | Disclaimer