Cách sử dụng git merge

Dec 31, 2024
Lập trình

Git sử dụng các nhánh để cô lập các luồng phát triển, để ngăn nhánh giải phóng ổn định bị ô nhiễm. Đưa công việc trong một nhánh vào dòng chính có nghĩa là hợp nhất các nhánh. Đây là cách bạn làm điều đó.

Sự hợp nhất trong git là gì?
Chuẩn bị hợp nhất một nhánh trong git
Thực hiện hợp nhất
Thực hiện hợp nhất nhanh chóng trong git
Cách giải quyết xung đột hợp nhất trong git
Mọi thứ cuối cùng kết hợp

Sự hợp nhất trong git là gì?

Git được thiết kế để làm cho phân nhánh đơn giản và nhanh chóng. Trái ngược với các hệ thống kiểm soát phiên bản khác, phân nhánh trên Git là một vấn đề tầm thường. Trong các dự án đa phát triển đặc biệt, việc phân nhánh là một trong những công cụ tổ chức cốt lõi của Git.

Các chi nhánh Sandbox Các nỗ lực phát triển mới để mã có thể được sửa đổi hoặc thêm vào mà không ảnh hưởng đến mã trong các nhánh khác, đặc biệt là nhánh chính hoặc chính. Điều này thường chứa phiên bản ổn định của cơ sở mã của bạn.

Việc cô lập những thay đổi này từ phiên bản mã ổn định của bạn có ý nghĩa hoàn hảo. Nhưng sớm hay muộn, mã mới sẽ được kiểm tra, xem xét và đóng dấu cao su để được cuộn vào nhánh chính. Tại thời điểm đó, bạn cần hợp nhất nhánh của bạn vào nhánh chính.

Trên thực tế, các nhánh có thể có chi nhánh phụ để bạn có thể hợp nhất nhánh của mình vào một số nhánh khác thay vì nhánh chính. Chỉ cần nhớ rằng việc hợp nhất luôn lấy một nhánh và hợp nhất nó thành một mục tiêu chi nhánh, bất cứ chi nhánh nào có thể là. Nếu bạn muốn hợp nhất nhánh chính của mình vào một nhánh khác, bạn cũng có thể làm điều đó.

Giống như hầu hết các hành động trong GIT, bạn thực hiện hợp nhất trong kho lưu trữ cục bộ của bạn và đẩy chúng vào kho lưu trữ từ xa của bạn.

Chuẩn bị hợp nhất một nhánh trong git

Chúng tôi đã có một dự án phát triển nhỏ với kho lưu trữ Git địa phương và kho lưu trữ Git từ xa. Chúng tôi đã tạo ra một chi nhánh có tên là Bugfix14, từ chi nhánh Master Master và làm việc với một giải pháp cho một lỗi.

Công việc đó đã được hoàn thành và chúng tôi đã thử nghiệm mã của chúng tôi. Tất cả hoạt động như mong đợi. Chúng tôi muốn thực hiện những thay đổi đó vào nhánh chính để bản sửa lỗi của chúng tôi là một phần của bản phát hành phần mềm tiếp theo.

Có một chút chuẩn bị được thực hiện trước khi chúng tôi thực hiện hợp nhất. Chúng ta cần đảm bảo rằng chi nhánh mục tiêu, trong trường hợp này, chi nhánh của Master Master, và chi nhánh mà chúng tôi sẽ hợp nhất vào đó đều được cập nhật.

  • Trên nhánh Bugfix14 : Đây là chi nhánh hiện tại của chúng tôi.
  • Chi nhánh của bạn được cập nhật với ‘Origin/Bugfix, : Chi nhánh trong kho lưu trữ địa phương của chúng tôi có lịch sử cam kết giống như chi nhánh trong kho từ xa. Điều đó có nghĩa là họ giống hệt nhau.
  • không có gì để cam kết Không có thay đổi trong khu vực dàn mà thiên đường đã được thực hiện.
  • Cây làm việc sạch sẽ : Không có những thay đổi không có gì trong thư mục làm việc.

Tất cả những điều đó chỉ ra rằng chi nhánh được cập nhật và chúng tôi rõ ràng để tiến hành. Nếu bất kỳ ai trong số này chỉ ra rằng những thay đổi tồn tại, chúng tôi cần phải tổ chức chúng, cam kết chúng và đẩy chúng đến điều khiển từ xa. Nếu ai đó đã làm việc trên các tệp này, chúng ta có thể cần phải kéo các thay đổi của họ từ kho lưu trữ từ xa.

Kiểm tra chi nhánh mà chúng tôi sẽ hợp nhất để đơn giản hóa quá trình hợp nhất. Nó cũng cho phép chúng tôi xác minh nó được cập nhật. Hãy để một cái nhìn vào nhánh chính.

Chúng tôi nhận được những xác nhận tương tự rằng chi nhánh Master Master của người Viking được cập nhật.

CÓ LIÊN QUAN: Làm thế nào để chọn quy trình công việc Git & amp; Mô hình phân nhánh phù hợp với nhóm của bạn

Thực hiện hợp nhất

Chi nhánh của Bugfix14 đã được phân nhánh từ chi nhánh Master Master. Đã có một cam kết với chi nhánh của Master Master sau khi chi nhánh Bugfix14 đã được tạo ra. Đã có một vài cam kết với chi nhánh Bugfix14.

Chúng tôi đã đảm bảo hai chi nhánh của chúng tôi được cập nhật và chúng tôi đã kiểm tra chi nhánh Master Master. Chúng ta có thể phát hành lệnh hợp nhất nhánh của Bugfix14 vào chi nhánh Master Master.

Việc hợp nhất diễn ra. Chi nhánh của Bugfix14 vẫn còn tồn tại, nhưng bây giờ những thay đổi được thực hiện trong nhánh đó đã được hợp nhất vào chi nhánh Master Master.

Trong trường hợp này, lệnh hợp nhất thực hiện Hợp nhất ba chiều . Chỉ có hai chi nhánh, nhưng có ba cam kết liên quan. Họ là người đứng đầu của một trong hai chi nhánh và là một cam kết thứ ba đại diện cho chính hành động hợp nhất.

Để cập nhật kho lưu trữ từ xa của chúng tôi, chúng tôi có thể sử dụng git đẩy yêu cầu.

Một số người thích xóa các nhánh bên sau khi họ đã hợp nhất chúng. Những người khác chăm sóc để bảo tồn chúng như một hồ sơ về lịch sử phát triển thực sự của dự án.

Nếu bạn muốn xóa chi nhánh, bạn có thể làm như vậy bằng cách sử dụng Chi nhánh Git lệnh với -D (Xóa) Tùy chọn.

ĐẾN Xóa chi nhánh Trong kho lưu trữ từ xa sử dụng lệnh này:

Bạn có thể có một lịch sử cam kết tuyến tính, nhưng nó đã giành được lịch sử thực sự.

CÓ LIÊN QUAN: Cách xóa các nhánh Git trên kho lưu trữ địa phương và từ xa

Thực hiện hợp nhất nhanh chóng trong git

Nếu bạn đã thực hiện bất kỳ cam kết nào với chi nhánh Master Master, lịch sử của bạn sẽ trông như thế này. Nó cũng sẽ trông này nếu bạn phản hồi Chi nhánh phát triển của bạn để nó gắn liền với phần cuối của chi nhánh Master Master.

Bởi vì không có cam kết nào trong chi nhánh Master Master, để hợp nhất chi nhánh Bugfix15, nên tất cả phải làm là chỉ ra con trỏ đầu của Master Master vào cam kết cuối cùng của nhánh Bugfix15.

Git sẽ thực hiện hợp nhất nhanh chóng chuyển tiếp Bất cứ khi nào nó có thể . Nếu việc cam kết với chi nhánh Master Master có nghĩa là một sự hợp nhất nhanh chóng là có thể, thì Git sẽ sử dụng Hợp nhất ba chiều .

Bạn có thể lực lượng Một sự hợp nhất nhanh chóng chuyển tiếp, điều đó có thể không thể, sau tất cả, nhưng bạn có thể tuyên bố rằng nó sẽ được hợp nhất nhanh chóng hoặc không có gì. Có một tùy chọn hướng dẫn Git sử dụng hợp nhất chuyển tiếp nhanh nếu có thể, nhưng không thực hiện hợp nhất ba chiều nếu nó có thể. Tùy chọn là -chỉ có (Chỉ hợp nhất chuyển tiếp nhanh).

Điều này hợp nhất nhánh của Bugfix15 vào nhánh Master Master, nhưng chỉ khi có thể hợp nhất chuyển tiếp nhanh.

Trong trường hợp này, đã có những cam kết với chi nhánh Master Master, vì vậy một sự hợp nhất nhanh chóng chuyển tiếp là có thể.

Cách giải quyết xung đột hợp nhất trong git

Nếu cùng một phần của cùng một tệp đã được thay đổi ở cả hai nhánh, các nhánh không thể được hợp nhất. Tương tác của con người là cần thiết để giải quyết các chỉnh sửa mâu thuẫn.

Tại đây, chúng tôi đã thực hiện các thay đổi đối với một tệp có tên là Rot Rot.C, trong một nhánh có tên là Bugfix17, mà chúng tôi muốn hợp nhất với chi nhánh Master Master. Tuy nhiên, Rot Rot.C đã được thay đổi trong chi nhánh Master Master.

Khi chúng tôi cố gắng hợp nhất nó, chúng tôi nhận được một cảnh báo rằng có những xung đột. Git liệt kê các tệp mâu thuẫn và cho chúng tôi biết sự hợp nhất không thành công. Chúng tôi có thể trở lại hoàn toàn bằng cách sử dụng --Huỷ bỏ lựa chọn:

Nhưng việc giải quyết hợp nhất là đáng sợ như âm thanh. Git đã làm một số công việc để giúp chúng tôi. Nếu chúng tôi chỉnh sửa một trong những tệp mâu thuẫn trong trường hợp của chúng tôi, chúng tôi chỉ có một tệp, chúng tôi sẽ tìm thấy các phần mã mâu thuẫn được tô sáng cho chúng tôi.

Mỗi cuộc xung đột được giới hạn bởi bảy nhân vật ít hơn & lt; & lt; & lt; & lt; & lt; & lt; & lt; "Và bảy nhân vật lớn hơn & gt; & gt; & gt; & gt; & gt; & gt; & gt; “Với bảy dấu hiệu bình đẳng ======= " giữa họ.

  • Mã trên các dấu hiệu tương đương là từ nhánh mà bạn hợp nhất vào trong .
  • Mã bên dưới dấu bằng là mã từ nhánh mà bạn đang cố gắng Hợp nhất .

Bạn có thể dễ dàng tìm kiếm một trong các bộ gồm bảy ký tự và chuyển từ xung đột sang xung đột thông qua tệp của bạn. Đối với mỗi xung đột, bạn cần chọn bộ chỉnh sửa mà bạn sẽ giữ. Bạn phải chỉnh sửa mã mà bạn đã từ chối và các dòng bảy ký tự mà Git đã thêm.

Chúng tôi sẽ giữ mã từ nhánh Bugfix17. Sau khi chỉnh sửa, tập tin của chúng tôi trông như thế này.

Bây giờ chúng ta có thể tiếp tục với sự hợp nhất. Nhưng lưu ý, chúng tôi sử dụng làm lệnh để làm như vậy, không phải Hợp nhất yêu cầu.

Chúng tôi cam kết thay đổi bằng cách dàn dựng tệp và cam kết như bình thường. Chúng tôi sẽ kiểm tra trạng thái trước khi chúng tôi cam kết cuối cùng.

Việc hợp nhất đã hoàn tất. Bây giờ chúng ta có thể đẩy nó vào kho lưu trữ từ xa của chúng ta.

CÓ LIÊN QUAN: Cách sửa, chỉnh sửa hoặc hoàn tác Git cam kết (thay đổi lịch sử Git)

Mọi thứ cuối cùng kết hợp

Cuối cùng, tất cả các chi nhánh cần phải được hợp nhất, để những thay đổi trong chúng không trở nên mồ côi và bị lãng quên.

Các chi nhánh hợp nhất rất dễ dàng, nhưng xử lý xung đột có thể trở nên phức tạp trong các nhóm bận rộn, lớn hơn. Giải quyết xung đột có thể yêu cầu đầu vào từ mỗi nhà phát triển chỉ để giải thích mã của họ làm gì và tại sao họ thực hiện các thay đổi của họ. Bạn cần phải hiểu rằng, trước khi bạn có thể đưa ra quyết định sáng suốt về những chỉnh sửa nào để giữ.

  • Cách đổi tên một chi nhánh trong git
  • Cách kiểm tra một chi nhánh Git từ xa
  • Cách cất các thay đổi trong git
  • Cách chuyển nhánh trong GitHub
  • Git Rebase: Mọi thứ bạn cần biết
  • OnePlus 11 ở đây, nhưng với một khởi đầu khó khăn
  • Microsoft Edge đang trò chuyện AI và một cái nhìn mới trên Windows
  • Tai nghe tốt nhất cho người hâm mộ iPhone chỉ đạt mức giá thấp nhất của họ

Lập trình - Các bài báo phổ biến nhất

Cách đổi tên một chi nhánh trong git

Lập trình Dec 19, 2024

Phân nhánh là một bài tập tầm thường trong GIT. Thật không may, các nhiệm vụ tầm thường hiếm khi nhận được sự chú ý đúng đắn, và những sai lầm x�..


Thể loại