Categorie
Linux

Guida intergalattica per Repository Git

Git rappresenta uno standard per gestire il versioning del codice sorgente (SOLO IL CODICE SORGENTE 🤣), per versatilità e semplicità.

Git è un SCM distribuito, non c’è un solo server centrale con l’unica versione ufficiale ma ad ogni clone creiamo un repository collegato con tanto di history dei commit.

git clone <http://…>

Ogni modifica è dichiarata al tramite il comando commit che si occupa di tracciare in un pacchetto (o versione) tutti i file presenti nello stage in quel momento, con un messaggio che lo rende facilmente identificabile nella history.

git commit -m “messaggio”

first of all… GITIGNORE –> https://www.gitignore.io/

git flow

Esistono tre luoghi in cui un file può essere: l’albero, l’indice e la copia di lavoro. Quando si aggiunge un file a una cartella, lo si aggiunge alla copia di lavoro. Quando fai qualcosa come git add file lo aggiungi all’indice. E quando lo commetti, lo aggiungi all’albero. Probabilmente ti aiuterà a conoscere i tre flag più comuni in git reset:

git reset [- <mode> ] [ <commit> ]

Questo modulo reimposta la diramazione attuale su <commit> e eventualmente aggiorna l’indice (reimpostandolo all’albero di <commit> ) e l’albero di lavoro in base a <mode> , che deve essere uno dei seguenti:
–soft Non tocca affatto il file indice né l’albero di lavoro (ma reimposta la testa su <commit> , proprio come fanno tutte le modalità). Questo lascia tutti i tuoi file modificati “Modifiche da impegnare”, come direbbe lo stato di git.

–misto Reimposta l’indice ma non l’albero di lavoro (cioè, i file modificati sono conservati ma non contrassegnati per il commit) e riporta ciò che non è stato aggiornato. Questa è l’azione predefinita.

–difficile Reimposta l’indice e l’albero di lavoro. Qualsiasi modifica ai file tracciati nell’albero di lavoro poiché <commit> viene scartata.

Ora, quando fai qualcosa come git reset HEAD – ciò che stai facendo è git reset HEAD --mixed e “resetterà” l’indice allo stato in cui era prima di iniziare ad aggiungere file / aggiungere modifiche all’indice (via git add ) In questo caso, la copia di lavoro e l’indice (o la fase di staging) erano sincronizzati, ma dopo il ripristino l’utente HEAD e l’indice erano sincronizzati.

git rm d’altra parte rimuove un file dalla directory di lavoro e dall’indice e quando si esegue il commit, il file viene rimosso dall’albero. git rm --cached tuttavia rimuove il file dal solo indice e lo mantiene nella copia di lavoro. Questo è l’esatto opposto di git add file In questo caso, hai fatto l’indice per essere diverso dal HEAD e il lavoro, in esso che il HEAD ha la versione precedentemente impegnata del file, la copia di lavoro ha avuto la modifica di las if any o content da HEAD del file e hai rimosso il file dall’indice. Un commit ora sincronizzerà l’indice e l’albero e il file verrà rimosso.

.gitignore does not work

Cambiato il .gitignore ma non vedi le modifiche? Piccola magia

git ls-files –deleted -z | git update-index –assume-unchanged -z –stdin

Git Stash ??

Il nostro lavoro potrebbe dover subire dei rallentamenti o Change Request improvvise e Git ci permette di gestire diversi “Branch” proprio per poter condurre contemporaneamente versioni diverse dello stesso applicativo. Per garantire la consistenza dei dati ci viene impedito di cambiare branch se abbiamo delle modifiche “in canna”, se il lavoro è incompleto, una commit potrebbe rendere lo stato inconsistente ma non vogliamo perdere le modifiche fatte… che fare? Possiamo utilizzare il comando stash

git stash

Ora, “messe da parte” le modifiche fatte al codice, si può cambiare stato (commit o branch) per poi sfruttare la pop per ripristinarli.

git stash
git pull
git stash pop

Official –> https://git-scm.com/docs/git-stash

Rename a Branch

If you want to rename a branch while pointed to any branch, do:

git branch -m <oldname> <newname>

If you want to rename the current branch, you can do:

git branch -m <newname>

Git Branch simple

in the new version of git you can use

git checkout <branch>

this simply checkout in a new local branch if does not exists

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.