Trong nỗ lực đạt được niết bàn git, tôi đang dành cả ngày để học cách tận dụng rebase cho các tình huống mà tôi hiện đang hợp nhất.
Khi chạy qua những gì tôi coi là luồng git 101 (mà tôi trình bày bên dưới), tôi phải thực hiện push --force
khi đẩy các thay đổi của mình trở lại nguồn gốc.
Tôi không phải là người duy nhất - tôi biết rằng đây là mặt đất có mái che (xem 1 , 2 , 3 , 4 , 5 ) và tôi hiểu các lý do kỹ thuật tại sao lực lượng là cần thiết. Vấn đề của tôi là điều này --- có rất nhiều (nhiều) mục blog ca ngợi rebase và cách nó đã thay đổi cuộc sống của họ (xem 1 , 2 , 3 , 4 để liệt kê một số), nhưng không ai trong số họ đề cập đó push --force
là một phần của dòng chảy của chúng. Tuy nhiên, gần như mọi câu trả lời cho các câu hỏi stackoverflow hiện tại đều nói những câu như "vâng, nếu bạn định rebase, bạn phải sử dụng push --force
".
Với số lượng và mức độ tin cậy của những người ủng hộ rebase, tôi phải tin rằng việc sử dụng 'push --force' không phải là một phần cố hữu của quy trình rebase và nếu ai đó thường xuyên phải thúc đẩy thì họ đang làm sai .
push --force
là một điều tồi tệ .
Vì vậy, đây là dòng chảy của tôi. Bằng cách nào tôi có thể đạt được kết quả tương tự mà không cần đến sức mạnh?
Ví dụ đơn giản
Hai chi nhánh:
- v1.0 - một nhánh phát hành, chỉ chứa các bản vá lỗi
- master - mọi thứ cho bản phát hành lớn tiếp theo.
Tôi có một vài cam kết về bản vá và một vài cam kết cho bản phát hành tiếp theo.
Tôi muốn kết hợp các bản vá vào tổng thể của mình để chúng không bị mất cho bản phát hành tiếp theo. Tiền khai sáng, tôi chỉ đơn giản là:
git checkout master
git merge v1.0
Nhưng bây giờ tôi đang cố gắng
git checkout master
git rebase v1.0
Vì vậy, bây giờ tôi ở đây:
Thời gian cho:
git push
Không có con xúc xắc.