Git Bandingkan Dua Cabang

Git Compare Two Branches



Hampir semua sistem kawalan versi mempunyai pilihan percabangan. Tetapi Git terkenal dengan kemampuan bercabang yang pantas. Cawangan git ringan. Oleh itu, hukuman prestasi untuk percabangan adalah minimum dan pasukan pembangunan digalakkan untuk bercabang dan bergabung sebanyak mungkin. Tetapi semasa anda bekerja dengan banyak cabang, penting untuk dapat membandingkan dan membezakan perbezaannya. Dalam tutorial ini, kita akan melalui aliran kerja untuk melihat bagaimana kita dapat membandingkan pelbagai cabang dan komitmen. Mari kita sediakan situasi berikut:

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









C02 => C04 => C05 (pengembangan)



Langkah-langkah berikut telah diambil:





  • C00: Ditambah hello_world.py (cawangan induk)
  • - Menciptakan cabang pembangunan
  • C01: hello_world.py yang diubah suai untuk menambahkan hello kedua (cabang induk)
  • C02: hello_world.py yang diubah suai untuk menambah cawangan Pembangunan mengatakan Hello (cawangan pengembangan)
  • C03: Ditambahkan readme.txt (cawangan induk)
  • C04: hello_world.py yang diubah suai untuk menambah cawangan Pembangunan mengatakan Hello lagi (cawangan pengembangan)
  • C05: Menambah info.txt (cabang pengembangan)
  • C06: Readme.txt yang diubah suai untuk menambah baris kedua (cabang induk)

Setelah semua melakukan, cawangan 'master' mempunyai fail berikut:

hello_world.py
readme.txt



Dan cabang ‘development’ mempunyai fail berikut:

hello_world.py
info.txt


Membandingkan kepala dua cabang

Anda boleh menggunakan nama cawangan untuk membandingkan kepala dua cabang:

$perbezaan gittuan..perkembangan

perbezaan - pergike/hello_world.py b/hello_world.py
indeks e27f806..3899ed3100644
---ke/hello_world.py
+++ b/hello_world.py
@@-2,7+2,7 @@

def utama():
mencetak('Hello pertama!')
- mencetak('Helo Kedua!')
-
+ cetak('Cawangan pembangunan berkata Hello')
+ cetak('Cabang pembangunan berkata Hello lagi')
sekiranya__nama__ =='__main__':
utama()
perbezaan - pergike/info.txt b/info.txt
barufailmod100644
indeks 0000000..0ab52fd
--- /penipu/batal
+++ b/info.txt
@@-0,0+1 @@
+ Maklumat baru
perbezaan - pergike/readme.txt b/readme.txt
dipadamkanfailmod100644
indeks e29c296..0000000
---ke/readme.txt
+++/penipu/batal
@@-1,2+0,0 @@
-1Baris pertama readme.txt
-2Baris kedua readme.txt

Perintah diff melihat perubahan secara rekursif. Telah menjalankan perbezaan berikut:

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

Di sini ‘a’ bermaksud cawangan ‘master’ dan ‘b’ bermaksud cawangan pembangunan. ‘A’ selalu diberikan pada parameter pertama dan ‘b’ ke parameter kedua. / Dev / null bermaksud bahawa cawangan tidak mempunyai fail.


Membandingkan antara melakukan

Dalam contoh kami, cabang ‘master’ mempunyai komitmen berikut:

$status git
Pada tuan cawangan
tiada komitmen, kerja direktori yang bersih

$log git --satu garisan
caa0ddd C06: Readme.txt yang diubah suai untuk menambah baris kedua(cawangan induk)
efaba94 C03: Ditambah readme.txt(cawangan induk)
ee60eac C01: hello_world.py yang diubah suai untuk menambah salam kedua(cawangan induk)
22b4bf9 C00: Ditambah hello_world.py(cawangan induk)

Cawangan pembangunan mempunyai komitmen berikut:

$status git
Mengenai pengembangan cawangan
tiada komitmen, kerja direktori yang bersih

$log git --satu garisan
df3a4ee C05: Menambah info.txt(cabang pembangunan)
0f0abb8 C04: Hello_world.py yang diubah suai untuk menambah cawangan Pembangunan mengatakan Hello lagi(cabang pembangunan)
3f611a0 C02: Hello_world.py yang diubah suai untuk menambah cawangan Pembangunan mengatakan Hello(cabang pembangunan)
22b4bf9 C00: Ditambah hello_world.py(cawangan induk)

Andaikan kita mahu membandingkan hello_world.py untuk C01 dan C02. Anda boleh menggunakan hash untuk membandingkan:

$perbezaan gitee60eac: hello_world.py 3f611a0: hello_world.py

perbezaan - pergike/ee60eac: hello_world.py b/3f611a0: hello_world.py
indeks e27f806..72a178d100644
---ke/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@

def utama():
mencetak('Hello pertama!')
- mencetak('Helo Kedua!')
+ cetak('Cawangan pembangunan berkata Hello')

sekiranya__nama__ =='__main__':
utama()

Anda juga boleh menggunakan prinsip yang sama untuk membandingkan komit dalam cawangan yang sama.


Alat Gabungan Visual

Melihat perbandingan berdasarkan teks boleh menjadi sukar. Sekiranya anda menyediakan Git difftool dengan aplikasi penggabungan visual seperti DiffMerge atau BeyondCompare , anda akan dapat melihat perbezaan dengan lebih baik.

Sambung belajar:

Rujukan: