Hampir semua sistem kawalan versi mempunyai pilihan percabangan. Tetapi Git terkenal dengan kemampuan bercabang yang pantas. Cawangan git ringan. Jadi penalti prestasi untuk percabangan adalah minimum dan pasukan pembangunan digalakkan untuk mencabut dan bergabung sebanyak mungkin. Tetapi semasa anda bekerja dengan pelbagai 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 atasi keadaan berikut:
C00 => C01 => C03 => C06 (induk)
\
C02 => C04 => C05 (pengembangan)
Langkah-langkah berikut telah diambil:
- C00: Tambah hello_world.py (cawangan induk)
- - Menciptakan cabang pembangunan
- C01: hello_world yang diubah suai.py untuk menambah hello kedua (cabang induk)
- C02: hello_world yang diubah suai.py untuk menambah cabang Pembangunan berkata Hello (cawangan pembangunan)
- C03: Readme ditambah.txt (cawangan induk)
- C04: hello_world yang diubah suai.py untuk menambah cabang Pembangunan berkata Hello lagi (cabang pengembangan)
- C05: Maklumat tambahan.txt (cabang pembangunan)
- C06: Readme yang diubah suai.txt untuk menambah baris kedua (cawangan induk)
Setelah semua melakukan, cawangan 'master' mempunyai fail berikut:
Hai dunia.py
baca saya.txt
Dan cawangan 'pengembangan' mempunyai fail berikut:
Hai dunia.py
maklumat.txt
Membandingkan kepala dua cabang
Anda boleh menggunakan nama cawangan untuk membandingkan kepala dua cabang:
$ git diff master… pembangunandiff --git a / hello_world.py b / hello_world.py
indeks e27f806… 3899ed3 100644
--- a / hello_world.py
+++ b / hello_world.py
@@ -2,7 +2,7 @@
def utama ():
cetak ("Helo Pertama!")
- cetak ("Helo Kedua!")
-
+ cetak ("Cabang pembangunan mengatakan Hello")
+ cetak ("Cabang pembangunan bertanya lagi.")
jika __nama__ == "__main__":
utama ()
perbezaan --git a / info.txt b / maklumat.txt
mod fail baru 100644
indeks 0000000… 0ab52fd
--- / dev / null
+++ b / maklumat.txt
@@ -0,0 +1 @@
+Maklumat baru
diff --git a / readme.txt b / readme.txt
mod fail dihapuskan 100644
indeks e29c296… 0000000
--- a / readme.txt
+++ / dev / null
@@ -1,2 +0,0 @@
-1 baris pertama readme.txt
-2 Baris readme kedua.txt
Perintah diff melihat perubahan secara rekursif. Telah menjalankan perbezaan berikut:
diff -git a / hello_world.py b / hello_world.py
diff -git a / maklumat.txt b / maklumat.txt
diff -git a / readme.txt b / readme.txt
Di sini 'a' bermaksud cabang 'master' dan 'b' bermaksud cawangan pembangunan. 'A' selalu ditugaskan untuk parameter pertama dan 'b' ke parameter kedua. The / dev / null bermaksud bahawa cawangan tidak mempunyai fail.
Membandingkan antara melakukan
Dalam contoh kami, cabang 'master' mempunyai komitmen berikut:
status $ gitPada tuan cawangan
tiada apa yang perlu dilakukan, direktori kerja bersih
$ git log - talian
caa0ddd C06: Readme yang diubah suai.txt untuk menambah baris kedua (cawangan induk)
efaba94 C03: Readme ditambah.txt (cawangan induk)
ee60eac C01: hello_world yang diubah suai.py untuk menambah hello kedua (cabang induk)
22b4bf9 C00: Ditambah hello_world.py (cawangan induk)
Cawangan pembangunan mempunyai komitmen berikut:
status $ gitPada pengembangan cawangan
tiada apa yang perlu dilakukan, direktori kerja bersih
$ git log - talian
df3a4ee C05: Maklumat tambahan.txt (cabang pembangunan)
0f0abb8 C04: hello_world yang diubah suai.py untuk menambah cabang Pembangunan berkata Hello lagi (cabang pengembangan)
3f611a0 C02: Hello_world yang diubah suai.py untuk menambah cabang Pembangunan berkata Hello (cawangan pembangunan)
22b4bf9 C00: Ditambah hello_world.py (cawangan induk)
Andaikan kita mahu membandingkan dunia hello_world.py untuk C01 dan C02 melakukan. Anda boleh menggunakan hash untuk membandingkan:
$ git diff ee60eac: hello_world.py 3f611a0: hello_world.pydiff --git a / ee60eac: hello_world.py b / 3f611a0: hello_world.py
indeks e27f806… 72a178d 100644
--- a / ee60eac: hello_world.py
+++ b / 3f611a0: hello_world.py
@@ -2,7 +2,7 @@
def utama ():
cetak ("Helo Pertama!")
- cetak ("Helo Kedua!")
+ cetak ("Cabang pembangunan mengatakan Hello")
jika __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 menyiapkan 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-Branch-in-a-Nutshell
- https: // git-scm.com / docs / git-diff
- https: // git-scm.com / docs / git-difftool
- https: // sumber sumber.com / diffmerge /
- https: // sumber sumber.com / diffmerge / webhelp / sec__git__linux.html
- https: // aliran tumpukan.com / soalan / 9834689 / membandingkan-dua-cabang-di-git
- https: // veerasundar.com / blog / 2011/06 / git-tutorial-membandingkan-fail-dengan-diff /
- https: // www.perisian skuter.com / ciri.php
- https: // www.perisian skuter.com / sokongan.php?zz = kb_vcs