Git So sánh hai nhánh

Git Compare Two Branches



Hầu hết tất cả các hệ thống điều khiển phiên bản đều có các tùy chọn phân nhánh. Nhưng Git được biết đến với khả năng phân nhánh nhanh. Git cành có trọng lượng nhẹ. Vì vậy, các hình phạt hiệu suất cho việc phân nhánh là tối thiểu và các nhóm phát triển được khuyến khích phân nhánh và hợp nhất càng nhiều càng tốt. Nhưng khi bạn đang làm việc với nhiều chi nhánh, điều quan trọng là có thể so sánh và đối chiếu sự khác biệt. Trong hướng dẫn này, chúng ta sẽ xem xét quy trình làm việc để xem cách chúng ta có thể so sánh các nhánh và cam kết khác nhau.

C00 => C01 => C03 => C06 (chính)









C02 => C04 => C05 (khai triển)



Các bước sau đã được thực hiện:





  • C00: Đã thêm hello_world.py (chi nhánh chính)
  • - Tạo nhánh phát triển
  • C01: Đã sửa đổi hello_world.py để thêm lời chào thứ hai (nhánh chính)
  • C02: Đã sửa đổi hello_world.py để thêm nhánh Phát triển nói Xin chào (nhánh phát triển)
  • C03: Đã thêm readme.txt (nhánh chính)
  • C04: Đã sửa đổi hello_world.py để thêm nhánh Phát triển nói Xin chào một lần nữa (nhánh phát triển)
  • C05: Đã thêm info.txt (nhánh phát triển)
  • C06: readme.txt được sửa đổi để thêm dòng thứ hai (nhánh chính)

Sau tất cả các lần cam kết, nhánh 'chính' có các tệp sau:

hello_world.py
readme.txt



Và nhánh 'phát triển' có các tệp sau:

hello_world.py
info.txt


So sánh đầu của hai nhánh

Bạn có thể sử dụng tên của các nhánh để so sánh đầu của hai nhánh:

$git diffmaster..development

khác biệt --điđến/hello_world.py b/hello_world.py
chỉ số e27f806..3899ed3100644
---đến/hello_world.py
+++ b/hello_world.py
@@-2,7+2,7 @@

def chính():
in('Xin chào đầu tiên!')
- in('Xin chào thứ hai!')
-
+ in('Chi nhánh phát triển nói Xin chào')
+ in('Chi nhánh phát triển nói Xin chào một lần nữa')
nếu như__name__ =='__chủ chốt__':
chủ chốt()
khác biệt --điđến/info.txt b/info.txt
Mớitập tinchế độ100644
chỉ số 0000000..0ab52fd
--- /nhà phát triển/vô giá trị
+++ b/info.txt
@@-0,0+1 @@
+ Thông tin mới
khác biệt --điđến/readme.txt b/readme.txt
đã xóatập tinchế độ100644
chỉ số e29c296..0000000
---đến/readme.txt
+++/nhà phát triển/vô giá trị
@@-1,2+0,0 @@
-1Dòng đầu tiên của readme.txt
-2Dòng thứ hai của readme.txt

Lệnh diff được xem xét một cách đệ quy các thay đổi. Nó đã chạy các khác biệt sau:

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

Ở đây ‘a’ là viết tắt của nhánh ‘master’ và ‘b’ là viết tắt của nhánh phát triển. ‘A’ luôn được gán cho tham số đầu tiên và ‘b’ cho tham số thứ hai. / Dev / null có nghĩa là nhánh đó không có tệp.


So sánh giữa các cam kết

Trong ví dụ của chúng tôi, nhánh 'master' có các cam kết sau:

$trạng thái git
Trên nhánh chính
không có gì để cam kết, thư mục làm việc sạch sẽ

$git log --một đường thẳng
caa0ddd C06: Đã sửa đổi readme.txt để thêm dòng thứ hai(chi nhánh chủ)
efaba94 C03: Đã thêm readme.txt(chi nhánh chủ)
ee60eac C01: Đã sửa đổi hello_world.py để thêm lời chào thứ hai(chi nhánh chủ)
22b4bf9 C00: Đã thêm hello_world.py(chi nhánh chủ)

Chi nhánh phát triển có những cam kết sau:

$trạng thái git
Về phát triển chi nhánh
không có gì để cam kết, thư mục làm việc sạch sẽ

$git log --một đường thẳng
df3a4ee C05: Đã thêm info.txt(chi nhánh phát triển)
0f0abb8 C04: Đã sửa đổi hello_world.py để thêm nhánh Phát triển nói Xin chào một lần nữa(chi nhánh phát triển)
3f611a0 C02: Đã sửa đổi hello_world.py để thêm nhánh Phát triển nói Xin chào(chi nhánh phát triển)
22b4bf9 C00: Đã thêm hello_world.py(chi nhánh chủ)

Giả sử chúng ta muốn so sánh các cam kết hello_world.py cho C01 và C02. Bạn có thể sử dụng các hàm băm để so sánh:

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

khác biệt --điđến/ee60eac: hello_world.py b/3f611a0: hello_world.py
chỉ số e27f806..72a178d100644
---đến/ee60eac: hello_world.py
+++ b/3f611a0: hello_world.py
@@-2,7+2,7 @@

def chính():
in('Xin chào đầu tiên!')
- in('Xin chào thứ hai!')
+ in('Chi nhánh phát triển nói Xin chào')

nếu như__name__ =='__chủ chốt__':
chủ chốt()

Bạn cũng có thể sử dụng nguyên tắc tương tự để so sánh các cam kết trong cùng một nhánh.


Công cụ hợp nhất trực quan

Nhìn vào các so sánh dựa trên văn bản có thể khó khăn. Nếu bạn thiết lập Git khuếch tán với một ứng dụng hợp nhất trực quan như DiffMerge hoặc Vượt qua sự so sánh , bạn sẽ có thể thấy sự khác biệt tốt hơn.

Học cao hơn:

Người giới thiệu: