Chuyển đổi một commit trên GitHub thành file patch
Ngày cập nhật: 2023-05-03 | Lượt đọc: 5739 | Số từ: 383 | Phân loại: Git
Hiện tại mình đang sử dụng một dự án mã nguồn mở, nhưng đã không còn được cập nhật trong nhiều năm. Vì vậy, hầu hết các tính năng mới đều không còn hỗ trợ. Tuy nhiên, vẫn có nhiều nhà phát triển bên thứ ba gửi các bản vá (patch), nhưng những bản vá này chưa bao giờ được tích hợp vào dự án chính.
Do đó, mình đã fork lại dự án gốc và bắt đầu áp dụng từng bản vá để cập nhật lại các tính năng mới. Đây là lý do vì sao mình cần chuyển đổi các commit trên GitHub thành file patch để có thể dễ dàng áp dụng cho phiên bản fork của mình.
Cách tạo file patch từ commit trên GitHub
Để lấy file patch từ một commit cụ thể trên GitHub, bạn chỉ cần thêm .patch
hoặc .diff
vào cuối URL commit.
Ví dụ:
Nếu URL commit là:
|
|
Thì URL tương ứng để tải file patch sẽ là:
|
|
Bạn có thể tải file này về máy, sau đó đổi tên lại theo ý muốn bằng cách sử dụng lệnh như sau:
|
|
Việc đặt tên rõ ràng rất quan trọng để quản lý các bản vá hiệu quả. Ví dụ, nếu patch này bổ sung sự kiện bootstrap cho tr069 simulator, thì bạn có thể đặt tên là bootstrap.patch
.
Áp dụng file patch
Sau khi có file patch, việc áp dụng rất đơn giản với lệnh:
|
|
Lệnh này sẽ áp dụng các thay đổi từ file patch vào codebase hiện tại của bạn.
Kiểm tra các thay đổi đã áp dụng
Bạn có thể kiểm tra trạng thái các tệp đã bị thay đổi bằng lệnh:
|
|
Kết quả có thể trông giống như sau:
|
|
Thông qua kết quả này, bạn có thể xác nhận xem patch đã được áp dụng đúng hay chưa.
Chiến lược hợp nhất code
Bên cạnh patch vừa nêu, mình còn có một số commit khác từ các pull request chưa được merge. Mình lo rằng các commit này có thể xung đột với nhau nên cần lên một kế hoạch an toàn.
Chiến lược mà mình đang sử dụng bao gồm:
- Sao lưu tất cả các file patch vào một thư mục riêng biệt để tránh mất dữ liệu.
- Áp dụng từng patch vào một branch riêng, giúp kiểm soát và theo dõi từng thay đổi dễ dàng hơn.
- Sau khi kiểm thử kỹ lưỡng trên từng branch, mới tiến hành hợp nhất chúng vào nhánh master.
Tài liệu
- Sử dụng
git diff
để tạo file patch - Quản lý và áp dụng patch trong Git một cách hiệu quả