Trong nỗ lực đạt được git niết bàn, 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.Tôi có thể sử dụng git rebase như thế nào mà không cần phải đẩy mạnh?
Khi chạy qua những gì tôi cho là luồng git 101 (mà tôi giải thích bên dưới), tôi phải push --force
khi đẩy các thay đổi của tôi về nguồn gốc.
Tôi không phải là người duy nhất - Tôi biết rằng điều này được bao phủ mặt đất (xem 1, 2, 3, 4, 5), và tôi hiểu những lý do kỹ thuật tại sao một lực lượng là cần thiết. Vấn đề của tôi là --- có rất nhiều bài viết trên blog ca ngợi sự phản đối và cách nó thay đổi cuộc sống của họ (xem 1, 2, 3, 4 để liệt kê một vài), nhưng không ai trong số họ đề cập rằng push --force
là một phần dòng chảy của họ. Tuy nhiên, gần như mọi câu trả lời cho các câu hỏi stackoverflow hiện có đều nói những câu như "yeah, nếu bạn sẽ rebase, ya gotta use push --force
".
Với số lượng và tính tôn giáo 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 vốn có của luồng rebase, và nếu người đó thường buộc phải đẩy họ, làm điều gì đó sai.
push --force
là bad thing.
Vì vậy, đây là luồng của tôi. Tôi có thể đạt được kết quả tương tự như thế nào nếu không có một lực?
Ví dụ đơn giản
Hai chi nhánh:
- v1.0 - một chi nhánh phát hành, chỉ chứa các bản vá lỗi
- chủ - tất cả mọi thứ cho việc phát hành lớn tiếp theo.
Tôi có một vài 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á lỗi vào bậc thầy của tôi để họ không bị mất cho phiên bản tiếp theo. Pre-giác ngộ tôi muốn 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 đang ở đây:
Thời gian:
git push
Không súc sắc.
Cảm ơn CG, tôi nghĩ rằng "sử dụng nó để tạo sự hợp nhất nhanh" là chìa khóa. Nó không áp dụng cho trường hợp của tôi ở trên, nơi tôi có hai nhánh sống - nhánh phát triển và nhánh phát hành, nhưng dường như áp dụng rất tốt cho các nhánh chủ đề tạm thời chỉ cần thiết cho một thời gian hạn chế, và sau đó có thể đã bị xóa khi chúng được hợp nhất. Cảm ơn một lần nữa. –
Tôi hiểu điều này, nhưng câu hỏi ban đầu vẫn còn. Tôi nghĩ câu trả lời thực tế là câu trả lời được đưa ra bởi [@Fabien Quatravaux] (http://stackoverflow.com/questions/11058312/how-can-i-use-git-rebase-without-requiring-a-forced-push# 11137857) – IsmailS
Vâng, bạn vẫn sẽ phải ép buộc nhánh 1.0, phải không? Ít nhất, đó là cách mọi thứ có xu hướng trở nên luôn luôn xảy ra với tôi. Phương pháp Fabiens sẽ ngăn chặn điều đó xảy ra. – joerx