Git è un sistema peer-to-peer di database chiave/valore su file system
Non c'è un server: il repository è locale ---> + veloce
Per git il progetto è l'unità indivisibile di lavoro, perciò quando faccio un commit git mi risalva tutto il progetto e NON LE MODIFICHE SUI SINGOLI FILE
- il file system è la directory con i tuoi file.
- il repository è il database locale su file che conserva i vari commit
- l’index è lo spazio che git ti mette a disposizione per creare il tuo prossimo commit prima di registrarlo definitivamente nel repository
Quando git salva i file nel database CHIAVE/VALORE:
- CHIAVE: calcola lo SHA1 del contenuto
- VALORE: contenuto stesso del file
git config --global user.name "Nome"
git config --global user.email "email"
git init
git add NOMEFILE
git commit -m "TESTO DI DESCRIZIONE DEL COMMIT"
gitk --all &
git log --graph --all --oneline
git log --oneline
git checkout HASH/BRANCH
git branch NOMEBRANCH HASH
git branch NOMEBRANCH
git branch -d NOMEBRANCH
git checkout -b NUOVOBRANCH
Per vedere le differenze tra due branch --> quali modifiche devo effettuare a FROM per farlo uguale a TO?
git diff FROMBRANCH1 TOBRANCH2
git log BRANCH1..BRANCH2 --oneline
git branch --force feature
git commit -am "DESCRIZIONE DEL COMMIT"
Applica i cambiamenti introdotti da un commit in un altro punto del repository (Dove ti trovi in quel momento)
git cherry-pick BRANCH/HASH
Spostare il RAMO CORRENTE sulla nuova BASE: ed è equivalente a spostare tutti i commit e il branch tramite cherry-pick
git rebase BASE
git merge NOMEBRANCH
Hai chiesto a git: “procurami un commit che contenga tutto quello che c’è nel mio branch corrente e aggiungici tutte le modifiche introdotte dal ramo NOMEBRANCH”
Il merge di due branch è eseguito in fast-forward quando è possibile spostare il primo ramo sul secondo semplicemente spingengolo in avanti
Su git il numero di genitori di un commit non è limitato a due. In altre parole, puoi mergiare tra loro quanti branch vuoi, in un colpo solo
git checkout BRANCHVECCHIO
git merge uno due tre quattro ...........
git mergetool --tool=emerge
- n --> Ti mostra con dei caratteri le righe in cui il codice è diverso e dopo con 'a' e 'b' scelgo quali delle due voglio
- q ---> Chiudo
Oppure apro il file con il notepad e mi farà notare le stesse cose (Cancello qullo di cui non ho bisogno)
git remote add NOMEREPO INDIRIZZO/PATH
git push NOMEREPO NOMEBRANCH
git fetch NOMEREPO
git pull NOMEREPO NOMEBRANCHDAMERGE