10 tecniche Git avanzate - KDnuggets

10 tecniche Git avanzate – KDnuggets

Nodo di origine: 3083811

10 tecniche Git avanzate
Immagine dell'autore
 

Ti sei mai chiesto cosa potresti fare per sembrare un professionista di fronte al tuo manager quando usi Git? In questo post impareremo 10 tecniche e scorciatoie Git avanzate che ti renderanno più efficiente nel controllo delle versioni, nella manutenzione e nella condivisione del codice.

Probabilmente conosci già le nozioni di base su commit, push, pull e branch con Git. Ma ci sono molti comandi e funzionalità meno conosciuti che possono migliorare le tue abilità. Dopo aver letto questo, avrai qualche asso nella manica per impressionare i colleghi con la tua competenza Git.

Hai aggiunto e confermato i file in questo modo più volte, ma cosa succede se ti dico che può essere fatto in una riga con il flag `-am`? 

$ git add .
$ git commit -m "new project"

 

Prova questo invece e aggiungerà le modifiche al file e creerà il commit utilizzando il messaggio. 

$ git commit -am "new project"

 

[master 17d7675] new project
4 files changed, 2 insertions(+), 1 deletion(-)

 

Puoi rinominare il messaggio di commit corrente utilizzando il flag `–amend` e scrivere il nuovo messaggio. Questo ti aiuterà con i messaggi accidentali.

$ git commit --amend -m "Love"

 

[master 7b7f891] Love
Date: Mon Jan 22 17:57:58 2024 +0500
4 files changed, 2 insertions(+), 1 deletion(-)

 

Puoi includere ulteriori modifiche al commit corrente prima di inviarlo al repository remoto. Per fare ciò, devi aggiungere le modifiche al file e quindi eseguire il commit utilizzando il flag `–amend`. Per mantenere il messaggio di commit precedente, usa semplicemente il flag `–no-edit`.

$ git add . 
$ git commit --amend --no-edit

 

[master f425059] Love
Date: Mon Jan 22 17:57:58 2024 +0500
6 files changed, 2 insertions(+), 34 deletions(-)

Se vuoi inviare un commit locale e sovrascrivere la cronologia remota senza dover risolvere i problemi, puoi utilizzare il flag `–force`. Tuttavia, è importante notare che l'utilizzo del flag force non è consigliato e dovrebbe essere utilizzato solo quando si è assolutamente sicuri di ciò che si sta facendo. Tieni presente che l'utilizzo del flag di forzatura riscriverà la cronologia remota.

$ git push origin master --force

 

Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 16 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 357 bytes | 357.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/kingabzpro/VSCode-DataCamp.git
8f184d5..f425059  master -> master

Per annullare un commit in Git, puoi utilizzare il comando "revert". Tuttavia, questo comando non rimuove alcun commit. Crea invece un nuovo commit che annulla le modifiche apportate dal commit originale.

Utilizzeremo il `log` con il flag `–oneline` per visualizzare la cronologia dei commit in una forma più breve. 

$ git log --oneline

 

f425059 (HEAD -> master, origin/master) Love
8f184d5 first commit

 

Per ripristinare un commit precedente, utilizziamo il comando `git revert` seguito dall'ID del commit. Questo crea un nuovo commit con le modifiche del commit precedente.

$ git revert 8f184d5

Vuoi aumentare la tua produttività su GitHub? Con GitHub Code Spaces, ora puoi modificare ed eseguire il tuo codice direttamente nel tuo browser. 

Per accedere a questa funzione, vai semplicemente al tuo repository preferito, premi il tasto punto (“.”) sulla tastiera e ti reindirizzerà all'interfaccia utente VSCode.

 

10 tecniche Git avanzate
Immagine dell'autore
 

Puoi apportare modifiche al codice e inviarle al tuo repository remoto. Tuttavia, se desideri eseguire il codice nel terminale, devi eseguire Codespace nel cloud. La versione gratuita offre un'eccellente opzione per eseguire il codice Python nel tuo browser. Non è fantastico? L'ho scoperto solo oggi.

 

10 tecniche Git avanzate
Immagine dell'autore

Quando lavori su un progetto, puoi aggiungere file a un'area di staging e quindi impegnarli per salvare i tuoi progressi attuali. Tuttavia, esiste un altro modo per salvare facilmente il tuo lavoro utilizzando il comando `stash`. Quando usi "stash", salvi i tuoi progressi attuali senza aggiungerli all'area di staging o impegnarli. Ciò ti consente di salvare i tuoi progressi e ripristinarli ogni volta che ne hai bisogno.

Salveremo i nostri progressi attuali fornendo un nome e nascondendolo. 

$ git stash save new-idea

 

Saved working directory and index state On master: new-idea

 

Puoi visualizzare l'elenco della tua scorta e annotare l'indice corrispondente per recuperarlo.

$ git stash list

 

stash@{0}: On master: new-idea

 

La nostra scorta di "nuove idee" viene salvata all'indice 0. Per recuperarla, usa questo comando:

$ git stash apply 0

 

On branch master
Your branch is up to date with 'origin/master'.

Hai la possibilità di rinominare il nome del ramo predefinito in qualcosa di più appropriato. In questo caso, rinomineremo “master” in “main”. 

$ git branch -M main

 

10 tecniche Git avanzate
 

Puoi verificare le modifiche utilizzando il seguente comando: 

$ git status

 

On branch main
Your branch is up to date with 'origin/master'.

Se desideri visualizzare una cronologia dettagliata di tutti i commit effettuati nel repository corrente, puoi utilizzare il comando `git log`. Tuttavia, l'output può essere difficile da leggere. Per renderlo più leggibile, puoi utilizzare i flag `graph`, `decorate` e `oneline`. Verranno visualizzate le modifiche apportate in più rami e il modo in cui si uniscono.

$ git log --graph --decorate --oneline

 

10 tecniche Git avanzate

In diverse occasioni sono passato a un nuovo ramo e ho dimenticato il nome del ramo precedente. Di conseguenza, ho dovuto utilizzare il comando `git branch -a` per visualizzare l'elenco dei nomi dei rami. Tuttavia, esiste un modo più semplice per tornare al ramo originale utilizzando il trattino "-" dopo il comando `git checkout`.

Creeremo prima il nuovo ramo Git “neo”.

$ git branch neo

 

Passeremo al ramo “neo”.

$ git checkout neo

 

Switched to branch 'neo'

 

Per tornare al ramo originale, utilizzeremo il seguente comando:

$ git checkout -

 

Switched to branch 'main'

Abbiamo imparato come sovrascrivere il repository remoto. Impariamo come sovrascrivere il repository locale utilizzando il repository remoto.

Utilizzeremo il comando "fetch" per ottenere le ultime modifiche dal repository remoto. 

$ git fetch origin

 

Quindi utilizzeremo il comando "reset" con il flag "hard" per sovrascrivere eventuali modifiche locali con la versione remota. Tieni presente che ciò eliminerà permanentemente eventuali modifiche locali.

$ git reset --hard origin/master

 

HEAD is now at f425059 Love

 

Se sono ancora presenti file non tracciati, possono essere rimossi utilizzando il seguente comando:

$ git clean -df

Ho avuto l'ispirazione di scrivere questo articolo dopo aver visto a Video Youtube da Fireship. Ammiro l'autore per la sua capacità di spiegare argomenti complessi in modo semplice. Seguendo il suo metodo, ho imparato molto sulle funzionalità di Git.

In questo articolo abbiamo trattato le tecniche Git avanzate che sono cruciali per i data scientist e gli ingegneri del software che stanno lavorando su un progetto collaborativo sui dati. Conoscere queste tecniche può aiutarti a evitare incidenti e a risolvere i problemi molto più velocemente.

Spero che tu abbia trovato utile questo blog. Per favore fatemi sapere se desiderate leggere più post con informazioni in formato byte sugli strumenti comunemente utilizzati nel mondo della scienza dei dati.
 
 

Abid Ali Awan (@1abidaliawan) è un professionista di data scientist certificato che ama creare modelli di machine learning. Attualmente si sta concentrando sulla creazione di contenuti e sulla scrittura di blog tecnici sulle tecnologie di apprendimento automatico e scienza dei dati. Abid ha conseguito un Master in Technology Management e una laurea in Ingegneria delle Telecomunicazioni. La sua visione è quella di costruire un prodotto di intelligenza artificiale utilizzando una rete neurale grafica per studenti alle prese con malattie mentali.

Timestamp:

Di più da KDnuggets