Vì vậy, tôi đã nhảy qua rất nhiều lần để làm cho luồng công việc git/rebase/pull-request trở nên dễ chịu đối với các nhà phát triển trong nhóm của tôi, những người sợ kiểm soát phiên bản và dòng lệnh.Buộc git thực hiện cam kết no-op trong khi rebase
Khi thêm bài viết rebase vào wiki phát triển của chúng tôi, tôi chỉ đến điểm tôi nói "Do git rebase
. Nếu có bất kỳ xung đột hợp nhất nào, hãy khắc phục chúng. Sau đó, thực hiện git add
. Sau đó, git rebase --continue
."
Nhưng khi làm việc thông qua ví dụ và chụp ảnh màn hình, tôi được nhắc rằng nếu có xung đột hợp nhất và tôi giải quyết nó theo hướng ngược dòng, thực hiện git rebase --continue
thực tế từ chối tiếp tục và đưa ra lỗi:
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.
có một cuộc thảo luận xuất sắc của các chi tiết kỹ thuật ở đây: Git rebase: conflicts keep blocking progress
Nhưng những gì tôi muốn là làm cho hành vi này dừng. Tôi cho rằng có một lý do thiết kế tốt lý do tại sao điều này xảy ra (có thể liên quan đến rebase chỉ bằng cách sử dụng máy móc cam kết bình thường, nơi hành vi này có thể có ý nghĩa) nhưng trong tình huống này nó khó hiểu và không trực quan và làm cho logic xung đột: xung đột. Nếu sửa chữa của bạn trông giống hệt như nhánh thượng nguồn, hãy làm git rebase --skip
. Trong tất cả các trường hợp khác, hãy thực hiện git rebase --continue
. "
Có cách nào để đẩy lùi hành vi này, với cờ để rebase hoặc trong tệp cấu hình được kiểm soát phiên bản (vì vậy tôi không phải thiết lập trên máy tính của từng dev hoặc cung cấp hướng dẫn để làm như vậy)?
Tôi không tin rằng đây là bản sao của câu hỏi đó. OP trên đó là hỏi về cách bỏ qua việc rebasing của các commit trống, trong khi OP ở đây hỏi về cách cho phép 'git rebase' tạo ra các commit trống. –
Nhưng tại sao bạn muốn có một cam kết trống? Một cam kết trống có nghĩa rằng tất cả các công việc được thực hiện trong nó đã được giới thiệu trong một cam kết từ chi nhánh đã được rebased lên. Trong trường hợp đó, toàn bộ cam kết cần phải được loại bỏ. Điều đó có thể được thực hiện sau khi thực tế (chẳng hạn như bằng cách sử dụng một rebase tương tác và bỏ qua các cam kết không mong muốn) hoặc bằng các phương pháp khác, nhưng nó chắc chắn "sai" để có một cam kết rỗng. – ErikE