Hampir semua sistem kontrol versi memiliki opsi percabangan. Tapi Git dikenal dengan kemampuan percabangannya yang cepat. Cabang Git ringan. Jadi hukuman kinerja untuk percabangan minimal dan tim pengembangan didorong untuk bercabang dan bergabung sebanyak mungkin. Tetapi ketika Anda bekerja dengan banyak cabang, penting untuk dapat membandingkan dan membedakan perbedaannya. Dalam tutorial ini, kita akan melalui alur kerja untuk melihat bagaimana kita dapat membandingkan berbagai cabang dan komit.Pertama-tama mari kita atur situasi berikut:
C00 => C01 => C03 => C06 (master)
\
C02 => C04 => C05 (pengembangan)
Langkah-langkah berikut diambil:
- C00: Menambahkan hello_world.py (cabang utama)
- - Membuat cabang pengembangan
- C01: Hello_world yang dimodifikasi.py untuk menambahkan halo kedua (cabang master)
- C02: Hello_world yang dimodifikasi.py untuk menambahkan cabang Pengembangan mengatakan Halo (cabang pengembangan)
- C03: Menambahkan readme.txt (cabang utama)
- C04: Hello_world yang dimodifikasi.py untuk menambahkan cabang Pengembangan berkata Halo lagi (cabang pengembangan)
- C05: Info tambahan.txt (cabang pengembangan)
- C06: Readme yang dimodifikasi.txt untuk menambahkan baris kedua (cabang master)
Setelah semua komit, cabang 'master' memiliki file-file berikut:
Halo Dunia.py
Baca aku.txt
Dan cabang 'pengembangan' memiliki file-file berikut:
Halo Dunia.py
info.txt
Membandingkan kepala dua cabang
Anda dapat menggunakan nama cabang untuk membandingkan kepala dua cabang:
$ git diff master… pengembangandiff --git a/hello_world.py b/hello_world.py
indeks e27f806… 3899ed3 100644
--- a/hello_world.py
+++ b/halo_dunia.py
@@ -2,7 +2,7 @@
def utama():
print("Halo Pertama!")
- print("Halo Kedua!")
-
+ print("Cabang pengembangan menyapa")
+ print("Cabang pengembangan menyapa lagi")
jika __name__ == "__main__":
utama()
diff --git a/info.txt b/info.txt
mode file baru 100644
indeks 0000000… 0ab52fd
--- /dev/null
+++ b/info.txt
@@ -0,0 +1 @@
+Informasi baru
diff --git a/readme.txt b/readme.txt
mode file yang dihapus 100644
indeks e29c296… 0000000
--- a/baca saya.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-1 baris pertama readme.txt
-2 baris kedua readme.txt
Perintah diff secara rekursif melihat perubahan. Ini telah menjalankan perbedaan 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' adalah singkatan dari cabang 'master' dan 'b' adalah singkatan dari cabang pengembangan. 'a' selalu ditetapkan untuk parameter pertama dan 'b' untuk parameter kedua. /dev/null berarti cabang itu tidak memiliki file.
Membandingkan antar komit
Dalam contoh kita, cabang 'master' memiliki komit berikut:
$git statusDi kepala cabang
tidak ada yang perlu dilakukan, direktori kerja bersih
$ git log --oneline
caa0ddd C06: Readme yang dimodifikasi.txt untuk menambahkan baris kedua (cabang master)
efaba94 C03: Menambahkan readme.txt (cabang utama)
ee60eac C01: Hello_world yang dimodifikasi.py untuk menambahkan halo kedua (cabang master)
22b4bf9 C00: Menambahkan hello_world.py (cabang utama)
Cabang pengembangan memiliki komitmen berikut:
$git statusPada pengembangan cabang
tidak ada yang perlu dilakukan, direktori kerja bersih
$ git log --oneline
df3a4ee C05: Info tambahan.txt (cabang pengembangan)
0f0abb8 C04: Hello_world yang dimodifikasi.py untuk menambahkan cabang Pengembangan berkata Halo lagi (cabang pengembangan)
3f611a0 C02: Hello_world yang dimodifikasi.py untuk menambahkan cabang Pengembangan mengatakan Halo (cabang pengembangan)
22b4bf9 C00: Menambahkan hello_world.py (cabang utama)
Misalkan kita ingin membandingkan hello_world.py untuk komit C01 dan C02. Anda dapat 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:halo_dunia.py
@@ -2,7 +2,7 @@
def utama():
print("Halo Pertama!")
- print("Halo Kedua!")
+ print("Cabang pengembangan menyapa")
jika __name__ == "__main__":
utama()
Anda dapat menggunakan prinsip yang sama untuk membandingkan komit dalam cabang yang sama juga.
Alat Penggabungan Visual
Melihat perbandingan berbasis teks bisa jadi sulit. Jika Anda mengatur difftool Git dengan aplikasi penggabungan visual seperti DiffMerge atau BeyondCompare, Anda akan dapat melihat perbedaan dengan lebih baik.
Pelajaran lanjutan:
- Dokumentasi Git Diff
- Dokumentasi Git DiffTool
- Pengaturan DiffMerge dengan DiffTool
- Pengaturan BeyondCompare dengan DiffTool
Referensi:
- Tutorial Git: Alat Diff and Merge, 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-Singkatnya
- 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-branch-in-git
- https://veerasundar.com/blog/2011/06/git-tutorial-comparing-files-with-diff/
- https://www.perangkat lunak skuter.com/fitur.php
- https://www.perangkat lunak skuter.com/dukungan.php?zz=kb_vcs