Differenze tra le versioni di "Git"
m (→Configurazione) |
m (→Commit!) |
||
Riga 56: | Riga 56: | ||
L'esecuzione del comando commit senza l'aggiunta di file alla Staging Area (e quindi senza nemmeno l'opzione <code>-a</code>) non avrà alcun effetto. | L'esecuzione del comando commit senza l'aggiunta di file alla Staging Area (e quindi senza nemmeno l'opzione <code>-a</code>) non avrà alcun effetto. | ||
+ | Se si commette un piccolo errore in una commit e si vuole modificare un file o il messaggio di commit stesso, senza però dover creare una nuova commit, può essere aggiunta l'opzione: | ||
$ git commit --amend | $ git commit --amend | ||
+ | |||
+ | '''!! ATTENZIONE: Non''' eseguire <code>--amend</code> su una commit che è già stata inviata ad un server remoto condiviso. | ||
== Log == | == Log == |
Versione delle 14:45, 17 dic 2017
!! Pagina in costruzione !!
Git è un sistema di controllo versione nato nel 2005 ad opera di Linus Torvalds con l'obiettivo principale di versionare il Kernel Linux. Questa non vuole essere una guida esaustiva, ma un prontuario per i comandi di uso più comune, con l'aggiunta di qualche consiglio. Per una trattazione completa, si rimanda alla guida ufficiale, disponibile anche in italiano.
Installazione e configurazione
Su sistemi Debian-derivati:
# apt-get install git
Su ArchLinux:
# pacman -S git
Si consiglia l'uso di ZSH per i suggerimenti nel completamento dei comandi.
Configurazione
I file di configurazione si trovano nei seguenti percorsi:
<repository_git_attuale>/.git/config # configurazione per singola cartella ~/.gitconfig # configurazione base per l'utente corrente /etc/gitconfig # configurazione di sistema (non necessariamente presente)
Alcune configurazioni importanti:
$ git config user.name Tizio Caio $ git config user.email tiziocaio@example.com $ git config user.signingkey <FOOTPRINT GPG> $ git config core.editor nano $ git config alias.co checkout
Aggiungendo l'opzione --global
, tali impostazioni diventeranno globali per l'utente corrente e non limitate al repository dal quale viene lanciato il comando.
Comandi di base
asd
init
Inizializzare un repository vuoto:
$ git init <sottocartella>
Se non viene specificata una sottocartella sarà inizializzato in quella attuale.
Aggiungendo l'opzione --bare
sarà creato un repository di tipo bare, ovvero privo della working directory, adatto per essere usato come repository remoto e non come cartella di lavoro.
Stato dei file
Con il comando
$ git status
si ottengono informazioni sui file attualmente presenti nella cartella di lavoro: se ce ne sono di nuovi (U), modificati (M), eliminati (D), etc... Darà inoltre informazioni sulla sincronizzazione tra la commit attuale e quella remota.
Aggiungere/Rimuovere files
Aggiungere un file nuovo (untracked) o modificato (rispetto all'ultima commit eseguita) nella Staging Area, ovvero pronto per la prossima commit:
$ git add <nome_file>
Rimuovere un file dall'indice dei file tracciati (risulterà quindi untracked):
$ git rm --cached <nome_file>
Omettendo --cached
il file sarà anche eliminato dalla cartella (quindi definitivamente).
Commit!
Una volta aggiunti i file desiderati alla Staging Area, la prossima commit è pronta per essere "consolidata", cioè registrata nella cronologia del repository:
$ git commit
Sarà aperto l'editor di testo scelto (vedi sezione configurazione) per scrivere un breve messaggio rappresentativo della commit. Se il messaggio non è eccessivamente lungo (come spesso accade) è sufficiente accodare al comando di commit l'opzione -m "Messaggio per la commit"
.
Un'altra scorciatoia utile può essere l'opzione -a
, che aggiunge automaticamente tutti i file modificati (rispetto all'ultima commit eseguita) alla Staging Area senza dover eseguire add
ogni volta. Questa opzione agisce solo su quelli modificati e non su quelli nuovi, per i quali la add
è d'obbligo almeno la prima volta.
Il comando tipico di commit sarà quindi:
$ git commit -a -m "Riparato bug. Aggiunti commenti al codice."
L'esecuzione del comando commit senza l'aggiunta di file alla Staging Area (e quindi senza nemmeno l'opzione -a
) non avrà alcun effetto.
Se si commette un piccolo errore in una commit e si vuole modificare un file o il messaggio di commit stesso, senza però dover creare una nuova commit, può essere aggiunta l'opzione:
$ git commit --amend
!! ATTENZIONE: Non eseguire --amend
su una commit che è già stata inviata ad un server remoto condiviso.
Log
$ git log
elenca tutta la cronologia delle commit corredata di somma SHA1, autore, data e ora di commit e messaggio.
È uno dei comandi col maggior numero di opzioni, dalla formattazione dell'output (più informazioni sull'autore, sulle commit firmate) al filtraggio (per autore, per data, per messaggio, etc...). Alcune delle più importanti sono:
--all
: elenca anche le commit relative ad altri branches (vedi sezione relativa)--oneline
: elenco sintetico con solamente ID SHA-1 e messaggio di commit--graph
: insieme a --all realizza una rappresentazione ASCII art della ramificazione del repository
Combinando insieme le 3 opzioni sarà visualizzata in modo sintetico (oneline) ed efficace (graph) tutta la cronologia del repo. Può essere utile definire un alias per questo comando (vedi sezione configurazione), ad esempio:
$ git config alias.megalog "log --all --oneline --graph"
Git online
Utilizzare un server git (repository remoto) può servire per:
- avere un backup del proprio progetto
- condividere il proprio progetto con altri
- lavorare in team sul progetto
- fare un fork di un progetto già esistente
Aggiungere un repository remoto
Nuovo
git remote add
Esistente
fork git clone