mywiki/git.md

314 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Git comandi principali
## Cos'è git?
Git è un software di *controllo versione distribuito* utilizzabile da interfaccia a riga di comando, creato da Linus Torvalds nel 2005. Git lavora con i repository, ognuno dei quali ha 4 stati di lavoro:
1. il primo stato è la *directory* corrente del progetto;
2. il secondo è l'*index* che fa da spazio di transito per i files (`git add *`);
3. il terzo è l'*head* che punta all'ultimo commit fatto (`git commit -m "messaggio"`);
4. l'ultimo è il *repository online* (`git push server`).
I repository online e locali possono essere divisi in ramificazioni o *branch*. I branch permettono di creare delle versioni alternative al codice presente nel ramo `master`, ovvero quello principale e stabile. Solitamente queste ramificazioni secondarie sono chiamate `dev`. Ciò permette la creazione di features o aggiornamenti in fase alpha che non vanno ad intaccare minimamente il codice del progetto. Finito la scrittura della ramificazione il branch dev verrà unito con il master.
Git permette anche di gestire i `tag`, le versioni del software in uso.
## Configurazioni di base di git
Configurare il git con le proprie credenziali:
```txt
git config --global user.name 'username'
git config --global user.email 'email@email.it'
```
### Creare un progetto
Ci son due modi per creare un progetto:
1. Inizializzare un progetto non esistente in locale:
```txt
git init
```
2. Inizializzare un progetto esistente su un server git (in remoto):
```txt
git clone serverURL.git
```
Esempio:
```txt
git clone https://gitea.it/PicciHud/Appunti.wiki.git
```
Git clone permette di copiare in locale il file .git del server e anche l'intero repository.
## Configurazione del server remoto
Con questo comando si visualizza la lista di server remoti salvati con il relativo url:
```txt
git remote -v
```
Di solito il server principale si chiama `origin`, ma è possibile specificare qualsiasi nome a gradimento.
### Aggiungere un un server remoto
```txt
git remote add identificatoreServerRemoto UrlServerRemoto
```
Esempio:
```txt
git remote add origin https://gitea.it/PicciHud/Appunti.wiki.git
```
## Lavorare nel progetto locale
### Aggiungere i file dalla directory del progetto all'index
```txt
git add nome_file
```
Si può utilizzare l'asterisco `*` per aggiungere tutti i file. Se si vuole escludere un file dalla selezione totale, basta creare un file denominato `.gitignore` e inserire all'interno i file o le directory che non devono essere aggiunte all'index.
```txt
git add *
```
### Aggiungere i file dell'index all'head
```txt
git commit -m "Messaggio del commit"
```
Annullamento dei commit:
```txt
git commit --amend
```
Il file ritorna allo stato precedente dellultimo commit:
```txt
git checkout -- nomeFile
```
## Lavorare con il server remoto
### Aggiornare il repository locale al commit più recente
```txt
git pull
```
### Upload dei commit
```txt
git push identificatoreServerRemoto nomeBranch
```
Esempio:
```txt
git push -u origin master
```
### Rinominare un file remoto
```txt
git remote rename identificatoreServerRemoto nomeFileVecchio nomeFileNuovo
```
### Eliminare un file remoto
```txt
git remote rm nomeFile
```
## Stato del progetto
Per vedere le modifiche del progetto:
```txt
git status
```
Per vedere i cambiamenti dei singoli files:
```txt
git diff
```
Vedere tutti i commit:
```txt
git log
```
## Gestire i tag
Per visualizzare tutte le versioni esiste il comando:
```txt
git tag
```
Per visualizzare tutte le versioni con un determinato numero:
```txt
git tag -l 1*
```
### Creazione di un tag
```txt
git tag -a versioneSoftware -m "nota sul tag"
```
Esempio:
```txt
git tag -a 1.2.3rc1 -m "aggiornato la navbar"
```
### Vedere tutte le modifiche di un tag
```txt
git show 1.2.3rc1
```
### Condividere i tag
```txt
git push identificatoreServerRemoto tagDaPubblicare
```
Esempio:
```txt
git push origin 1.2.3rc1
```
Condividere tutti i tag:
```txt
git push identificatoreServerRemoto --tag
```
Esempio:
```txt
git push origin --tag
```
## Gestire i Branch
Lista dei Rami:
```txt
git branch
```
### Creazione di un branch
```txt
git branch nomeBranch
```
Esempio:
```txt
git branch feature
```
Creare il ramo e passare a quel branch:
```txt
git checkout -b nomeBranch
```
Esempio:
```txt
git checkout -b feature
```
### Cambiare ramo
```txt
git checkout nomeBranch
```
Esempio:
```txt
git checkout feature
```
Per ritornare al branch originale digitare:
```txt
git checkout master
```
### Eliminare un ramo
```txt
git branch -d nomeBranch
```
Esempio:
```txt
git branch -d feature
```
### Unire il branch al master (fare un commit nel branch)
```txt
git checkout master
git merge feature
```
## Git Parameters
```txt
*** Inizializza l'area di lavoro ***
clone Clona un repository in una cartella
init Crea un git repository o ne inizializza uno
*** Lavorare nel progetto corrente ***
add Aggiungere i file nel INDEX
rm Rimuove i file dalla directory corrente e nel INDEX
*** Mostra la cronologia e lo stato ***
log Mostra i log
status stato del contenuto di un progetto
show Show various types of objects
*** Grow, mark and tweak your common history ***
branch Visualizza, crea e elimina ramo (branches)
checkout Cambia ramo (branches) o ripristina la struttura dell'area di lavoro
commit Registra le modifiche del repository
diff Confronta i commit
merge Unisce una o più cronologie di sviluppo
tag Crea, visualizza la lista, elimina o verifica il tag della versione del progetto
```
## Collegamenti
- http://rogerdudler.github.io/git-guide/index.it.html