Also sprach Alessandro

git, per esempi

Inizializzare un nuovo progetto

$ git init
$ git remote add origin <URL>
$ git add .
$ git commit -m 'Initial commit'
$ git push -u origin master

Creare un commit aggiungendo file, specificando un messaggio

$ git add -- file1.c file2.c
$ git commit -am 'Messaggio di commit' # Include tutti gli altri file modificati e aggiunge un messaggio di commit.

Merge di un feature-branch in master

$ git checkout master
$ git merge feature/x   # Merge
$ git mergetool         # Apre lo strumento per risolvere i merge conflict.
$ git commit            # Conclude il merge

Comandi generali

Inizializzazione repository

Inizializzazione repository

$ git init

Inizializzazione repository specificando il branch iniziale

$ git init -b master

Pulizia

Rimozione dei file untracked (utile post-merge)

$ git clean -f

Rimozione dei file untracked ma supervisionando il processo

$ git clean -i

Pull

Mi sono dimenticato di lanciare git pull prima di effettuare git commit

$ git pull --rebase <remote-name> <branch> ## remote-name solitamente è origin

Fetch

Quando viene lanciato git pull, viene effettuato un fetch degli oggetti remoti ed un eventuale merge con gli oggetti locali (se modificati). Fetch non effettua il merge.

Aggiornare tutti i branch del progetto

$ git fetch --all

Rimuovere localmente i branch già rimossi su remote

$ git fetch --prune

Commit

Commit con messaggio

$ git commit -m "Messaggio"

Effettuare il commit con tutti i file in area di staging

$ git commit -a

Diff

Statistiche

$ git diff --stat

Diff di file aggiunti in area di staging

$ git diff --cached

Creare una patch (generale)

$ git diff > filename.patch

Creare una patch di un file (o un insieme di file)

$ git diff -- <file1> <fileN> > patch_name.patch

Applicare una patch

$ git apply <patch-name>.patch

Merge

Effettuare il merge di nel branch attuale

$ git merge <branch2> Dopo il merge vorremo tendenzialmente cancellarlo: $ git branch -d <branch2> $ git push origin -d <branch2>

Mergetool

Usare il tool grafico

$ git mergetool -g

Usare un editor diverso

$ git merge -t <nome-tool>

Ripetere merge su un singolo file

$ git checkout -m <file>

Blame

Ottenere l’ultimo commit (+autore) per ogni riga di un file

$ git blame <filepath>

Revert

Annulla il commit specificato, riapplicando la patch; per farlo crea un nuovo commit.

$ git revert <commit-hash>

Cherry pick

Importare un commit nel branch attuale

$ git cherry-pick <commit-hash>