CodeGym /Corsi /Python SELF IT /Lavorare con i rami git in PyCharm

Lavorare con i rami git in PyCharm

Python SELF IT
Livello 12 , Lezione 3
Disponibile

11.1 Rami in git

Lavorare con i rami (branches) in Git è uno degli aspetti chiave della gestione delle versioni, che consente di procedere in parallelo con più linee di sviluppo in un unico repository. Il branching rende Git uno strumento potente per la collaborazione, gli esperimenti e la gestione delle diverse versioni del progetto.

Puoi vedere i rami in Git come cartelle, dove Git copia il tuo progetto. Hai la cartella principale del tuo progetto nel tuo repository localemaster. Git può creare copie di questa cartella, così puoi sperimentare senza rischiare di danneggiare il codice principale funzionante. Queste cartelle-copie sono chiamate ramibranches.

I rami sono varianti alternative del codice. Supponi che vuoi rifare qualcosa in un grande progetto o condurre un esperimento, di cui non sei completamente sicuro. Come faresti senza Git?

Potresti copiare il progetto in una nuova cartella e provare a cambiare tutto lì. Se il risultato ti piacerà, lo potrai copiare nella cartella principale. Se non ti piace — dimenticala, o magari eliminala del tutto.

Diamo un'occhiata a un esempio della vita reale, ad esempio, scrivere un libro:

  1. Hai il manoscritto del libro (ramo principale).
  2. Decidi di provare a cambiare il finale (creazione di un nuovo ramo).
  3. Scrivi il nuovo finale in un documento separato (lavoro nel nuovo ramo).
  4. Se il nuovo finale risulta migliore, sostituirai quello vecchio nel manoscritto (fusione dei rami).
  5. Elimini il documento con il nuovo finale (rimozione del ramo).

11.2 Creazione di rami

Creare un ramo in PyCharm è molto semplice.

Inserisci il nome del ramo.

PyCharm mostrerà subito il nome del tuo ramo corrente in alto nel menu:

Cosa c'era prima?

In precedenza, veniva mostrato il nome del tuo primo e principale ramo — master.

Ora viene mostrato test, il che significa che Git (sotto la guida di PyCharm) non solo ha creato un nuovo ramo, ma ci si è subito spostato.

Aggiungiamo del codice nel file main.py del ramo corrente (test) e facciamo il commit.

11.3 Cambio tra i rami

Passo 1. Selezioniamo il ramo.

Ora cambiamo al nostro vecchio ramo. Clicca sul menu superiore, e cosa vediamo lì?

Non confondiamoci — è tutto molto semplice:

Local — è l’elenco dei rami del tuo repository git locale; qui ce ne sono due:

  • test
  • master

Remote — è il tuo repository remoto, che si trova sul server GitHub. Abbiamo inviato lì le tue modifiche, ma il nuovo ramo non c'è, il che ha senso. Il repository remoto si chiama origin, e contiene solo il ramo master.

Recent — è l’elenco dei nomi degli ultimi rami con cui hai lavorato. Questo elemento è stato aggiunto in PyCharm per comodità e velocità.

Il nome origin/master a destra del nome del repository locale — è il nome del repository remoto con cui ora è sincronizzato, e dove verranno inviate le modifiche.

Passo 2. — Carichiamo il codice del ramo nella cartella corrente.

Passo 3. Verifichiamo:.

A me viene mostrato il ramo (master) e il vecchio codice.

11.4 Fusione dei rami

Ora proviamo a combinare il codice dei nostri due rami.

Passo 1. Per cominciare, aggiungiamo al nostro progetto un altro file — init.py e scriviamo del codice lì.

  • Crea il file init.py
  • Scrivi del codice dentro: print("Ciao")
  • Esegui il commit del file.

Ecco come appaiono i miei due file nel ramo master:

Passo 2. Fusione dei rami.

Fondiamo le modifiche fatte nel ramo test nel nostro ramo corrente (master).

Per questo, utilizziamo anche il menu superiore e il comando «Merge ‘test’ into ‘master’».

Passo 3. Verifichiamo il risultato:.

Verifichiamo:

  • Sopra c'è ancora il ramo master
  • Abbiamo due file: init.py e main.py
  • Il file main.py contiene il codice che è stato aggiunto nel ramo test.

11.5 Conflitti durante la fusione

A volte, durante la fusione dei rami, si verificano dei conflitti.

Se apporti modifiche a un file in rami diversi e provi a unirli, può verificarsi un conflitto.

Conflitto di file di testo

Git è un sistema molto intelligente, riconosce i tipi di file. Se apporti modifiche in diverse parti di file che considera di testo, semplicemente trasferirà le modifiche da un file all'altro nel punto giusto, come farebbe un essere umano.

Conflitto di file binari

Ma se apporti modifiche a un'immagine o a un documento, Git non tenterà di unire le loro parti in un unico file, semplicemente ti chiederà quale versione del file vuoi mantenere nel ramo corrente.

Risoluzione manuale dei conflitti:

Se apporti modifiche nello stesso punto di un file di testo, Git non sarà in grado di unire correttamente le diverse versioni e ti chiederà di farlo tu.

Ecco come potrebbe apparire:

Cosa vedi qui:

  • A sinistra il contenuto del file main.py del ramo master
  • A destra il contenuto del file main.py del ramo test
  • Al centro, PyCharm ti propone di scrivere la versione finale del codice (puoi cliccare sui pulsanti «>>» e «<<», per inserire automaticamente le modifiche da uno dei file).

Ho accettato la versione master e ho scritto il codice a mano. Ecco cosa ho ottenuto.

11.6 Cronologia delle modifiche

Ancora interessante e utile: puoi guardare la cronologia delle modifiche di qualsiasi file, cliccando sul pulsante Show History. Ci sono due posti dove può trovarsi — trova il suo.

Ecco come appare la cronologia delle modifiche per me per il file main.py:

Spiegazioni:

  • A sinistra vedi la cronologia delle modifiche di un file specifico:
    • Più la modifica è nuova, più è in alto; più è vecchia, più è in basso.
    • Qui viene mostrata anche la cronologia della fusione dei rami.
  • A destra — le modifiche che sono state apportate in un commit specifico.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION