314 lines
5.7 KiB
Markdown
314 lines
5.7 KiB
Markdown
|
# 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 dell’ultimo 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
|