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>