Git Confronta due rami

Git Compare Two Branches



Quasi tutti i sistemi di controllo della versione hanno opzioni di ramificazione. Ma Git è noto per le sue capacità di ramificazione rapida. I rami di Git sono leggeri. Quindi le penalizzazioni in termini di prestazioni per il branching sono minime e i team di sviluppo sono incoraggiati a branch e unire il più possibile. Ma quando lavori con più rami, è importante essere in grado di confrontare e contrastare le differenze. In questo tutorial, esamineremo un flusso di lavoro per vedere come possiamo confrontare vari rami e commit. Per prima cosa impostiamo la seguente situazione:

C00 => C01 => C03 => C06 (principale)









C02 => C04 => C05 (sviluppo)



Sono stati effettuati i seguenti passaggi:





  • C00: Aggiunto hello_world.py (ramo principale)
  • — Creato il ramo di sviluppo
  • C01: modificato hello_world.py per aggiungere un secondo hello (ramo principale)
  • C02: modificato hello_world.py per aggiungere il ramo di sviluppo dice Hello (ramo di sviluppo)
  • C03: Aggiunto readme.txt (ramo principale)
  • C04: modificato hello_world.py per aggiungere il ramo di sviluppo che dice di nuovo Hello (ramo di sviluppo)
  • C05: Aggiunto info.txt (ramo sviluppo)
  • C06: modificato readme.txt per aggiungere la seconda riga (ramo principale)

Dopo tutti i commit, il ramo 'master' ha i seguenti file:

ciao_mondo.py
leggimi.txt



E il ramo 'sviluppo' ha i seguenti file:

ciao_mondo.py
info.txt


Confrontando le teste di due rami

Puoi usare il nome dei rami per confrontare i capi di due rami:

$git diffmaestro..sviluppo

differenza --andarea/ciao_mondo.py b/ciao_mondo.py
indice e27f806..3899ed3100644
---a/ciao_mondo.py
+++ b/ciao_mondo.py
@@-2,7+2,7 @@

def principale():
Stampa('Primo ciao!')
- Stampa('Secondo Ciao!')
-
+ stampa('Il ramo di sviluppo saluta')
+ stampa('Il ramo di sviluppo saluta di nuovo')
Se__nome__ =='__principale__':
principale()
differenza --andarea/info.txt b/info.txt
nuovofilemodalità100644
indice 0000000..0ab52fd
--- /sviluppo/nullo
+++ b/info.txt
@@-0,0+1 @@
+Nuove informazioni
differenza --andarea/leggimi.txt b/leggimi.txt
cancellatofilemodalità100644
indice e29c296..0000000
---a/leggimi.txt
+++/sviluppo/nullo
@@-1,2+0,0 @@
-1Prima riga di readme.txt
-2Seconda riga di readme.txt

Il comando diff sta esaminando ricorsivamente le modifiche. Ha eseguito le seguenti differenze:

diff –git a/ciao_mondo.py b/ciao_mondo.py
diff –git a/info.txt b/info.txt
diff –git a/readme.txt b/readme.txt

Qui 'a' sta per il ramo 'master' e 'b' sta per il ramo di sviluppo. La 'a' è sempre assegnata al primo parametro e la 'b' al secondo parametro. Il /dev/null significa che il ramo non ha il file.


Confronto tra commit

Nel nostro esempio, il ramo 'master' ha i seguenti commit:

$stato git
Sul maestro di filiale
niente da eseguire, pulizia della directory di lavoro

$git log --una linea
caa0ddd C06: readme.txt modificato per aggiungere la seconda riga(ramo principale)
efaba94 C03: Aggiunto readme.txt(ramo principale)
ee60eac C01: modificato hello_world.py per aggiungere un secondo ciao(ramo principale)
22b4bf9 C00: Aggiunto hello_world.py(ramo principale)

Il ramo di sviluppo ha i seguenti commit:

$stato git
Sullo sviluppo del ramo
niente da eseguire, pulizia della directory di lavoro

$git log --una linea
df3a4ee C05: Aggiunto info.txt(ramo di sviluppo)
0f0abb8 C04: modificato hello_world.py per aggiungere il ramo di sviluppo che dice di nuovo Hello(ramo di sviluppo)
3f611a0 C02: modificato hello_world.py per aggiungere il ramo di sviluppo dice Hello(ramo di sviluppo)
22b4bf9 C00: Aggiunto hello_world.py(ramo principale)

Supponiamo di voler confrontare hello_world.py per i commit C01 e C02. Puoi usare gli hash per confrontare:

$git diffee60eac:ciao_mondo.py 3f611a0:ciao_mondo.py

differenza --andarea/ee60eac:hello_world.py b/3f611a0:ciao_mondo.py
indice e27f806..72a178d100644
---a/ee60eac:ciao_mondo.py
+++ b/3f611a0:ciao_mondo.py
@@-2,7+2,7 @@

def principale():
Stampa('Primo ciao!')
- Stampa('Secondo Ciao!')
+ stampa('Il ramo di sviluppo saluta')

Se__nome__ =='__principale__':
principale()

Puoi usare lo stesso principio anche per confrontare i commit all'interno dello stesso ramo.


Strumenti di unione visiva

Guardare i confronti basati sul testo può essere difficile. Se configuri Git difftool con un'applicazione di unione visiva come DiffUnisci o Al di là del confronto , sarai in grado di vedere meglio le differenze.

Ulteriori studi:

Riferimenti: