2010-03-25 37 views

Trả lời

50

This post có một lời giải thích tốt đẹp:

Câu trả lời nằm trong rebasing. Rebasing là một kỹ thuật được phổ biến bởi git, nơi bạn viết lại các bản vá chưa được đẩy để chúng áp dụng đối với mẹo từ xa hiện tại, thay vì chống lại phần đầu của kho lưu trữ mà bạn đã xảy ra lần kéo cuối cùng. Lợi ích là lịch sử hợp nhất của bạn hiển thị các kết hợp hữu ích — hợp nhất giữa các nhánh chính - thay vì chỉ đơn giản là mọi hợp nhất bạn đã thực hiện với kho lưu trữ ngược dòng.

Kéo thông thường, hợp nhất, đẩy chuỗi sẽ tạo một số cam kết không hữu ích về lịch sử kho lưu trữ của bạn. Rebasing giúp loại bỏ chúng.

+1

Câu trả lời rõ ràng, cảm ơn Vincent. Tuy nhiên, theo quan điểm của tôi, nó khiến tôi nghĩ rằng nếu đó là tất cả với nó, nó có thể không có giá trị rắc rối của việc thêm một tính năng mới và một khái niệm mới cho người dùng suy nghĩ về. –

+0

bạn không phải sử dụng rebasing, bạn luôn có thể chi nhánh và hợp nhất. iirc rebase không được kích hoạt theo mặc định trong mecurial –

+3

@jk Nếu nó không được kích hoạt theo mặc định, nó là một ý tưởng tốt để yêu cầu tất cả các nhà phát triển để kích hoạt nó? Điều gì sẽ xảy ra nếu một số không? – Vincent

4

Nếu bạn thực hiện một chuỗi kéo-hợp nhất-đẩy và nhận được "hợp nhất" sai bạn luôn có thể "backout" các cam kết hợp nhất ". Vì vậy, bạn có một cách dễ dàng để "hoàn tác một cú đẩy". Tôi không biết nếu có một cách tương đương dễ dàng khi sử dụng rebase.

+0

Lệnh rebase sẽ bỏ qua thao tác hợp nhất, do đó không cần phải thoát ra khỏi một hợp nhất xấu. – Vincent

+1

Tôi không hiểu bình luận của bạn .. Điểm của tôi là, bằng cách sử dụng hợp nhất, thật dễ dàng để "backout" một cú đẩy xấu. Làm thế nào để bạn làm điều đó với rebase? – Guy

+1

Khi sử dụng lệnh rebase, không có hoạt động hợp nhất. Vì vậy, nó không thể có một "hợp nhất xấu". Nếu bạn đẩy mạnh sau khi rebase và nó không tốt, bạn luôn có thể quay trở lại. – Vincent

Các vấn đề liên quan