Đúng phần lớn
Hệ thống quản lý phiên bản Git không có cơ chế nhận diện hai thay đổi cùng xử lý một vấn đề. Hệ thống chỉ báo xung đột khi các bản vá tương ứng tình cờ chạm vào cùng những dòng mã; nếu không, hai bản vá được hợp nhất với nhau mà không có cảnh báo nào. Lớp chặn duy nhất còn lại là khâu code review — và nó chỉ phát hiện được trùng lặp khi người review quen thuộc với cả hai ticket.
Cơ chế merge của Git hoạt động trên phạm vi từng dòng. Tài liệu chính thức của dự án Git, sách Pro Git, minh họa quá trình này bằng các sơ đồ về hai nhánh phân kỳ được gộp lại thành một, đăng trên git-scm.com. Khi hai nhánh chỉnh sửa cùng một vùng dòng, Git dừng lại và yêu cầu giải quyết xung đột. Khi hai bản vá sửa hai vùng dòng khác nhau, quá trình hợp nhất chạy qua một cách âm thầm — kể cả khi cả hai cùng nhằm sửa một vấn đề, theo hai cách triển khai khác nhau.
Nói cách khác, Git nhìn thấy vị trí của thay đổi trong tệp, chứ không nhìn thấy ý định đằng sau thay đổi đó. Hai ticket khác nhau có thể dẫn đến hai bản vá cùng mục tiêu mà hệ thống không hề hay biết.
Trong tình huống đó, khâu review trở thành điểm kiểm soát duy nhất cho loại trùng lặp này. Một bản vá thừa chỉ bị phát hiện nếu người làm review quen thuộc với cả hai ticket. Nếu reviewer chỉ theo dõi một trong hai, thay đổi trùng lặp sẽ đi thẳng vào mã nguồn mà không ai nhận ra.
Giới hạn này tạo ra rủi ro thực tế trong các nhóm phát triển, nơi nhiều ticket có thể dẫn tới công việc chồng lấn mà không có công cụ tự động nào cảnh báo.
Kết luận: Đúng phần lớn — Git chỉ tự phát hiện trùng lặp khi các bản vá chạm cùng dòng mã, và khâu review chỉ bắt được trường hợp này khi người review quen thuộc với cả hai ticket.