Created on 19 Jun 2015 ; Modified on 23 Aug 2016
Qui riporto alcuni semplici how to usando Git: un sistema per la gestione delle versioni di gruppi di file (come dicono gli informatici: version control system).
Per chi vuole qualche riferimento:
Si può riassumere come segue:
Da cui i seguenti comandi
git status git add nomi_dei_file git commit git pull git push
Quando si vuole portare un lavoro in un repository GIT dedicato si procede così
git init
).gitignore
in cui elencare, uno per riga, i file che NON
si vuole mettere nel repository; in questo file si possono usare patten del tipo *.pdf
per indicare tutti i file di tipo pdfgit add .
)git commit -m "messaggio_esplicativo_del motivo_del_commit"
)Da cui i seguenti comandi:
mkdir prj_dir cp * prj_dir cd prj_dir git init touch .gitignore vim .gitignore .... git add . git commit -m "caricamento iniziale"
aggiunge tag al (branch) master, ultimo commit:
git tag -a v0.1 -m "sprint-1"
oppure per agganciare il tag ad un particolare commit:
git tag -a 1.0.1 8226ae1acfa99f43526de3e6c228a34da8536a29 -m "sprint-1"
per copiare il tag al repository remoto:
git push --follow-tags git@git.dominio:progetto.git
cancella tag, localmente e su repo:
git tag -d v0.1
git push git@git.defalcoalfano.it:cedife.git :refs/tags/v0.1
Quando si vuole aggiungere un file al controllo di GIT si usa il comando git add ...
Puo accedere di aggiungere file non voluti, ad esempio per un errore di digitazione.
In questi casi git reset
annulla gli add
effettuati, anche se non si è
ancora fatto commit
.
Quando si vuole cambiare branch, ma si è in una sitazione in cui non si
ritiene opportuno fare commit, è possibile usare il comando git stash
Questo salva la situazione attuale, che può essere ripristinata successivamente
usando il comando git stash apply
Si possono avere più stash. Si elencano con il comando git stash list
L'opzione apply
applica l'ultimo stash effettuato.
Per applicare uno stash precedente l'ultimo, lo si può indicare utilizzando
pedissequamente il nome indicato dall'opzione list
.
Gli stash(es) vengono ricordati da git. Per eliminarli tutti si usa il comando git stash clear
.
Mentre, per eliminare l'ultimo stash registrato basta indicare git stash drop
. Questo
stesso comando si può utilizzare per cancellare una stash precedente l'ultimo. Va indicato in coda il nome, o
l'indice, dello stash da rimuovere.
E' possibile gestire più di un repository remoto rispetto un repository locale.
Il comando git remote add nome ...
permette di
aggiungere un riferimento ad un repository remoto, distinto dal remoto di riferimento
(quest'ultimo ha nome standard: origin
).
Quindi, ad esempio:
git remote add alt indirizzo_repository_remoto git push -u alt --all
git clone indirizzo_repository_remoto
Ad esempio:
>git clone https://github.com/miguelgrinberg/flasky.git
git log
Un esempio di output è:
>git log commit 9ea2d63e1ebaaddfc1739f63cf365a712402ae68 Author: ldfa <luciano@xxxxxx.xxx> Date: Mon Mar 30 19:27:14 2015 +0200 miomodulo * debug delle funzioni per ... commit e0965b87880684325a9dcc9ec01df9d035b1cf79 Author: ldfa <luciano@xxxxxx.xxx> Date: Thu Mar 26 20:21:27 2015 +0100 ....
git show commit_id:path_to_file
Nota. Per salvare il file, ridirigere l'output su disco. Ad esempio:
git show c30d9cutted:shared/miomodulo/miofile.cs > miofile.cs.old
git show --pretty="format:" --name-only commit_id
Ad esempio:
>git show --pretty="format:" --name-only e728eb32df5c15681c7b45576c6bd218a9926a54 miasoluzione/miasoluzione/mioprogetto/Controllers/HomeController.cs miasoluzione/miasoluzione/mioprogetto/Views/EditController/EditEdit.cshtml
Ottenendo i relativi file nella directory corrente:
git checkout nome_branch
Per eliminare un branch dal repository locale: git branch -d nome_branch
Dopo avere eliminato un branch localmente, se lo si vuole
cancellare anche dal repository remoto (origin): git push origin :nome_branch
Per avere l'elenco dei branch dal repository locale: git branch
git push -u origine nome_branch
Ad esempio:
>git push -u http://reporemoto/tfs/mycollection/_git/progetto db_core Username for 'http://reporemoto': Administrator Password for 'http://Administrator@reporemoto': < ... > * [new branch] db_core -> db_core Branch db_core set up to track remote branch db_core from http://reporemoto/tfs/mycollection/_git/progetto
git config --list
Ad esempio:
>git config --list core.symlinks=false core.autocrlf=true < ... > user.email=myname@mydomain user.name=myname < ... > remote.origin.url=http://reporemoto/tfs/mycollection/_git/progetto remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.master.remote=origin branch.master.merge=refs/heads/master