❗️WIP - il cheatsheet non è completo! per gli studenti: visitare questo link
Un riassunto dei comandi (e concetti) chiave di git rivolto a tutti, creato per gli studenti del mio corso. Vito Vitale - Licenza MIT
Nel seguente documento sono presenti diagrammi creati utilizzando la sintassi mermaid non ancora supportata da Github. E' possibile comunque visualizzare correttamente tali diagrammi aggiungendo al proprio browser l'estensione open source Github + Mermaid (disponibile per Chrome e Firefox).
ls -la
- visualizzazione dettagliata dei file nella cartella corrente
touch NOME_FILE
- crea un file vuoto col nome specificato
mkdir NOME_CARTELLA
- crea una cartella col nome specificato
cd NOME_CARTELLA
- entra nella cartella specificata
cd NOME_CARTELLA/NOME_SOTTOCARTELLA
- navigazione "annidata"
cd ..
- torna alla cartella di livello immediatamente superiore
git init
- inizializza un nuovo repository all'interno della cartella corrente
git clone PROTOCOLLO@URL.REPOSITORY.REMOTO
- clona il repository remoto in una copia locale, contenuta all'interno di una cartella che avrà il nome del repo
git config --global user.name “NOME oppure USERNAME”
è possibile inserire il proprio nome e cognome oppure l'username utilizzato nel servizio di hosting (preferisco l'username)
git config --global user.email “la@propria.email”
(deve coincidere)
Il tag --global
permetterà di salvare tali informazioni a livello globale di macchina, in modo da essere identificati in qualsiasi repo locale; se omesso, queste informazioni avranno validità solo nel repo corrente.
E' possibile creare alias all'interno di git per comandi molto lunghi.
git config --global alias.NOME_ALIAS "COMANDO GIT (SENZA GIT COME PREFISSO)"
alias visto a lezione per il log oneline e con visualizzazione ramificata dei branch:
git config --global alias.lg "log --graph --decorate --pretty=oneline --abbrev-commit --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'"
sequenceDiagram
Note left of WORKING DIR: git diff
Note left of WORKING DIR: git restore
WORKING DIR ->> INDEX (STAGING): git add
INDEX (STAGING)-->> WORKING DIR: git restore --staged
INDEX (STAGING)->>.git REPO: git commit
git status
- visualizza i file in stato modified e staged
git diff NOME_FILE
- visualizza le nuove modifiche da te apportate (stato modified)
git restore NOME_FILE
💣 - annulla le modifiche al file
git add NOME_FILE
- porta il file dallo stato modified a staged
è possibile specificare anche il nome di una cartella o un "risolutore" esempio:
git add .
- aggiunge all'INDEX tutti i file modified (non contenuti nel .gitignore)
git restore --staged NOME_FILE
- porta indietro il file dallo stato staged a modified
git diff --staged
- visualizza le nuove modifiche in stato staged (e non ancora committate)
git commit -m"MESSAGGIO"
- aggiunge permanentemente i file staged al repo (committed)
git commit --amend -m"NUOVO MESSAGGIO"
- permette di modificare il contenuto e il messaggio dell'ultimo commit (i file messi subito prima in staged verranno aggiunti all'ultimo commit)
git branch
- visualizza la lista di tutti i branch (il branch corrente sarà contrassegnato dal *
)
git branch NOME_NUOVO_BRANCH
- crea un nuovo branch a partire dall'ultimo commit
git checkout NOME_BRANCH
- entra nel branch specificato (verrà copiato nella WORKING DIR)
git checkout -b NOME_NUOVO_BRANCH
- crea ed entra nel branch specificato (verrà copiato nella WORKING DIR)
git merge NOME_BRANCH_DA_UNIRE
- unisce il branch specificato nel branch corrente
git log
- visualizza tutti i commit apparententi alla storia dei branch
git remote -v
- visualizza la lista di collegamenti attivi fra il repository locale e il repository remoto
git remote add NOME_COLLEGAMENTO URL.REPOSITORY.REMOTO
- crea un nuovo collegamento all'url del repository remoto specificato (utile dopo una fork per collegarsi al repo originale - UPSTREAM)
git fetch [NOME_COLLEGAMENTO]
- scarica tutti i branch nel repo locale dal collegamento specificato (origin se non specificato), senza modificare la WORKING DIR
git pull [NOME_COLLEGAMENTO] [NOME_BRANCH]
- esegue la fetch sincronizzando il repo locale, scaricando tutte le modifiche e modificando la WORKING DIR (parametri facoltativi)
git push [NOME_COLLEGAMENTO] [NOME_BRANCH]
- invia tutti i commit (nuovi) presenti nel repo locale al repo remoto, al branch specificato (parametri facoltativi se abbiamo utilizzato il flag --set-upstream
)
git push --set-upstream [NOME_COLLEGAMENTO] [NOME_BRANCH]
- utile al primo push di un nuovo branch locale nel repo remoto (dal momento successivo sarà possibile effettuare le operazioni fetch, pull e push senza specificare gli argomenti aggiuntivi)
git stash
- salva localmente (nell'area di stash) l'attuale stato della WORKING DIR e dell'INDEX
git stash list
- visualizza tutti gli stash salvati in precedenza
git stash apply
- applica l'ultimo stash alle WORKING DIR e INDEX
git stash drop
- cancella l'ultimo stash presente nell'area
git rebase NOME_BRANCH
git reset --hard COMMIT_ID