Tôi muốn cung cấp một góc nhìn khác về ý nghĩa của "git pull --rebase", bởi vì đôi khi nó dường như bị mất.
Nếu bạn đã từng sử dụng Subversion (hoặc CVS), bạn có thể được sử dụng cho hành vi "cập nhật svn". Nếu bạn có các thay đổi để cam kết và cam kết thất bại vì các thay đổi đã được thực hiện ngược dòng, bạn "cập nhật svn". Subversion tiến hành bằng cách hợp nhất các thay đổi ngược dòng với của bạn, có khả năng dẫn đến xung đột.
Những gì Subversion vừa làm, về cơ bản là "pull --rebase". Hành động tái lập các thay đổi cục bộ của bạn có liên quan đến phiên bản mới hơn là phần "khởi động lại" của nó. Nếu bạn đã thực hiện "svn diff" trước lần thử cam kết không thành công và so sánh kết quả khác với kết quả của "svn diff" sau đó, sự khác biệt giữa hai khác biệt là những gì hoạt động khởi động lại đã làm.
Sự khác biệt chính giữa Git và Subversion trong trường hợp này là trong Subversion, "thay đổi" của bạn chỉ tồn tại dưới dạng những thay đổi không cam kết trong bản sao làm việc của bạn, trong khi trong Git bạn có các cam kết thực tế cục bộ. Nói cách khác, trong Git bạn đã rẽ nhánh lịch sử; lịch sử của bạn và lịch sử ngược dòng đã chuyển hướng, nhưng bạn có một tổ tiên chung.
Theo tôi, trong trường hợp bình thường có chi nhánh địa phương của bạn chỉ đơn giản là phản ánh chi nhánh thượng nguồn và phát triển liên tục trên đó, điều đúng đắn luôn luôn là "- cơ sở", bởi vì đó là những gì bạn thực sự đang làm . Bạn và những người khác đang hack đi vào lịch sử tuyến tính dự định của một chi nhánh. Việc một người khác tình cờ đẩy nhẹ trước nỗ lực đẩy của bạn là không liên quan, và dường như phản tác dụng đối với mỗi tai nạn thời gian như vậy dẫn đến sáp nhập trong lịch sử.
Nếu bạn thực sự cảm thấy cần một cái gì đó để trở thành một chi nhánh vì bất kỳ lý do gì, đó là một mối quan tâm khác theo quan điểm của tôi. Nhưng trừ khi bạn có mong muốn cụ thể và chủ động để thể hiện các thay đổi của mình dưới dạng hợp nhất, theo tôi, hành vi mặc định sẽ là "git pull --rebase".
Vui lòng xem xét những người khác cần quan sát và hiểu lịch sử của dự án của bạn. Bạn có muốn lịch sử tràn ngập hàng trăm sự hợp nhất ở khắp mọi nơi, hoặc bạn chỉ muốn một vài sự hợp nhất được lựa chọn đại diện cho sự hợp nhất thực sự của những nỗ lực phát triển khác nhau có chủ ý?