Git là một công cụ cho phép cộng tác giữa các nhà phát triển phần mềm. Khi nhiều nhà phát triển làm việc trên cùng một dự án và đẩy code vào cùng một kho lưu trữ, xung đột hợp nhất có thể xảy ra. Git có thể tự động xử lý một số xung đột hợp nhất, trong khi những xung đột khác phải được giải quyết theo cách thủ công.
Trong bài lab này, bạn sẽ giải quyết xung đột hợp nhất trong kho lưu trữ. Quan sát quá trình hợp nhất tự động và hiểu được quá trình code của bạn được kiểm tra như thế nào.
Bạn có thể đăng nhập vào GitLab bằng thông tin đăng nhập được cung cấp dưới đây, tại đây bạn sẽ tìm thấy một dự án có sẵn và sử dụng nó trong toàn bộ bài lab. Ngăn điều hướng bên trái cung cấp nhiều tùy chọn để bạn có thể khám phá dự án. Ví dụ: để xem các branch hiện có, bạn có thể chọn option branch. Lúc này, bạn sẽ thấy tất cả các branch tồn tại trên máy chủ GitLab.
Để sao chép dự án hiện có, bạn có thể copy URL của dự án, và bạn có thể tìm thấy URL này nếu quay lại trang Project chính và chọn Clone. Ở đây sẽ có hai lựa chọn. Tùy chọn dễ nhất là sao chép URL HTTP.
Để sao chép kho lưu trữ - repository, hãy mở Visual Studio Code và mở thư mục working_directory. Lúc này sẽ có thư mục trống. Bạn có thể thực hiện tất cả các tác vụ từ terminal của Visual Studio Code. Để sao chép dự án, hãy sử dụng lệnh git clone.
Lệnh git có nhiều tùy chọn khác nhau, có thể được sử dụng để quản lý dự án của bạn. Ví dụ, để xem tất cả các branch, bạn có thể sử dụng lệnh git branch dash dash all. Bây giờ dự án của bạn đã được sao chép, bạn có thể thử nghiệm với code được cung cấp.
Bài code là một máy tính mạng đơn giản. Bạn có thể chạy máy tính với các mạng khác nhau để tính toán một số thông số. Nếu bạn đặt một mạng lớn làm đầu vào, có thể nhận thấy rằng phải mất một khoảng thời gian để tính toán.
Mã tối ưu hóa tính toán được cung cấp trong branch cố định. Trước khi hợp nhất, bạn có thể so sánh các branch. Git cho phép bạn so sánh sự khác biệt giữa các branch với lệnh git diff. Bạn có thể so sánh các local branches và remote branch. Để so sánh remote branch, bạn cần chỉ định “tên của remote/ tên branch”.
Hợp nhất code rất đơn giản. Bạn cần phải ở trong target branch. Sau đó, sử dụng lệnh git merge và chỉ định branch nguồn làm tham số. Bạn có thể hợp nhất trực tiếp từ xa. Nếu xung đột hợp nhất xảy ra, nó sẽ được thể hiện trong output.
Khi có xung đột, bạn cần phải giải quyết chúng trước khi tiếp tục phát triển. Lệnh git status hiển thị danh sách các tệp có xung đột hợp nhất. Có thể xem các thay đổi chưa được hợp nhất bằng lệnh git diff.
Bạn có thể sử dụng trình chỉnh sửa để giải quyết xung đột hợp nhất. Chọn các đoạn code mà bạn muốn giữ trong mã tệp của mình. Khi bạn hài lòng và xác minh rằng code đang hoạt động, bạn có thể thực hiện các thay đổi. Thêm mã vào repository của tổ chức và xác nhận.
Git luôn cố gắng tự động hóa code từ hai branch. Đôi khi kết quả của automerge là code không hoạt động. Bạn có thể quan sát thấy điều đó khi bạn hợp nhất refactor branch vào master branch. Khi bạn thực hiện hợp nhất, nó sẽ thành công từ quan điểm Git.
Nhưng nếu bạn cố gắng chạy code, bạn sẽ thấy exception. Vấn đề là Git không biết nội dung của các tệp và không thể tự động giả định những gì bạn cần để code hoạt động. Do đó, điều rất quan trọng là bạn phải luôn thực hiện kiểm tra sau khi hợp nhất để phát hiện ra các vấn đề như vậy.
Để khắc phục sự cố, hãy tạo một branch mới. Áp dụng các bản sửa lỗi trong code để có code cuối cùng như được hiển thị trong demo. Khi bạn hài lòng và xác minh code, hãy xác nhận code trong nhánh hotfix. Chuyển branch thành master và hợp nhất branch hotfix vào master. Bạn nên thường xuyên đẩy code vào kho lưu trữ từ xa, thông qua lệnh git push.
Bạn có thể quan sát lịch sử dự án trong GitLab. Tùy chọn đồ thị biểu diễn của việc hợp nhất code. Kết thúc bản demo, bạn có thể xem cách hợp nhất code từ branch này với branch khác. Bạn đã giải quyết thành công xung đột hợp nhất. Bạn cũng thấy rằng việc tự động hóa không chính xác có thể xảy ra, và tầm quan trọng của việc kiểm tra code thường xuyên.