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..perkembanganperbezaan - 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 gitPada 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 gitMengenai 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.pyperbezaan - 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:
- Dokumentasi Git Diff
- Dokumentasi Git DiffTool
- Persediaan DiffMerge dengan DiffTool
- BeyondCompare Setup dengan DiffTool
Rujukan:
- Tutorial Git: Diff and Merge Tools , Youtube
- http://coding4streetcred.com/blog/post/configure-diffmerge-for-your-git-difftool
- http://gitbaby.com/how-to-diff-one-file-to-an-arbitrary-version-in-git.html
- https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
- https://git-scm.com/book/id/v2/Git-Branching-Branches-in-a-Nutshell
- https://git-scm.com/docs/git-diff
- https://git-scm.com/docs/git-difftool
- https://sourcegear.com/diffmerge/
- https://sourcegear.com/diffmerge/webhelp/sec__git__linux.html
- https://stackoverflow.com/questions/9834689/comparing-two-branches-in-git
- https://veerasundar.com/blog/2011/06/git-tutorial-comparing-files-with-diff/
- https://www.scootersoftware.com/features.php
- https://www.scootersoftware.com/support.php?zz=kb_vcs