Khi làm việc với một bản sửa lỗi hoặc một tính năng, đôi khi tôi vấp phải các vấn đề nhỏ khác có thể được cải thiện nhanh chóng chỉ trong vài giây. Khi tôi thực hiện chúng ngay lập tức và sau đó cam kết tính năng / sửa lỗi đã hoàn thành, cam kết bao gồm nhiều hơn một điều. Ví dụ "add feature X and code clean up"
hay "fix bug X and improved logging"
. Sẽ là tốt hơn để chia điều này thành hai cam kết. Trong trường hợp hai thay đổi xảy ra trong cùng một tệp, tôi không thể chỉ cần thêm một tệp, cam kết, thêm tệp kia và sau đó xác nhận lại. Vì vậy, tôi thấy ba tùy chọn sau:
Cố tình bỏ qua những thứ không liên quan trong khi làm việc trên một cái gì đó.
Sao chép tệp với hai thay đổi, hoàn nguyên tệp, bao gồm một thay đổi, cam kết, bao gồm thay đổi khác, cam kết lại.
Không thay đổi những thứ nhỏ không liên quan mà thêm chúng vào danh sách việc cần làm và thực hiện chúng sau.
Tôi không thực sự thích tất cả ba tùy chọn, vì những lý do sau:
Chất lượng mã có thể bị ảnh hưởng nếu một người không khắc phục các vấn đề nhỏ. Và tôi cảm thấy tồi tệ nếu tôi cố tình bỏ lỡ một cơ hội để cải thiện một cái gì đó mà không cần nỗ lực nhiều.
Điều này làm tăng công việc thủ công và dễ bị lỗi.
Điều này tốt cho các todos không quá nhỏ, nhưng việc thêm một mục nhỏ vào danh sách việc cần làm và xem lại sau này thường mất nhiều thời gian hơn là chỉ sửa nó ngay lập tức.
Làm thế nào để bạn xử lý các tình huống như vậy?
git add -p
rất nhiều cho phép tôi tương tác chọn các phần của tệp tôi muốn cam kết. Nếu việc dọn dẹp đủ tách biệt, điều này rất dễ thực hiện. Nếu việc phân tách khó khăn hơn, tôi cam kết trạng thái trên một nhánh tạm thời, sau đó thêm thủ công các thay đổi vào nhánh thực tế của mình cho đến khi không có khác biệt với nhánh tạm thời. Điều này đòi hỏi nhiều công việc hơn, nhưng cho phép tôi kiểm tra xem mỗi cam kết hoạt động riêng.