2012-11-01 41 views
5

Tôi thường nghe nói rằng việc sử dụng git rebase làm giảm số lượng xung đột hợp nhất trái với git merge, nhưng tôi chưa bao giờ tìm thấy giải thích tại sao lại như vậy.Tại sao git rebase thường có ít xung đột hợp nhất hơn so với hợp nhất?

Chỉ cần phát lại một tập hợp thay đổi trên một tập hợp thay đổi khác không kỳ diệu xua tan xung đột vốn có khi hai người cùng sửa đổi cùng một dòng mã, vậy điều gì làm cho quá trình rebase tốt hơn?

Có ai có thể cung cấp một ví dụ đơn giản về việc hợp nhất có xung đột hay không nhưng việc rebase không?

CẬP NHẬT: Sau 3 năm kinh nghiệm git, tôi đã tin rằng tiền đề ban đầu của tôi là sai: xung đột có khả năng ngang nhau trong rebase và hợp nhất. Tuy nhiên, quá trình rebase làm cho lịch sử dễ hiểu hơn và chọn lựa hoặc tua lại khi cần.

+0

Thực ra, việc rebase có thể cho bạn nhiều mâu thuẫn hơn hợp nhất: xem xét hai cam kết, một cam kết thay đổi xung đột và một thay đổi khác. Trong quá trình rebase, bạn sẽ phải giải quyết một hoặc thậm chí hai xung đột, trong khi hợp nhất sẽ bỏ qua hoàn toàn thay đổi đó + hoàn nguyên cặp. – Roman

Trả lời

0

Bạn giải quyết các xung đột trong cam kết nơi chúng sẽ được giới thiệu, do đó, có hiệu lực, bạn không có bất kỳ.

Nếu tôi chỉnh sửa một dòng trong nhánh tính năng của mình, từ đó đã thay đổi trong nhánh chính và thực hiện hợp nhất đơn giản, nó sẽ xung đột.

Nếu tôi rebase, nó sẽ dừng lại ở cam kết mà tôi đã thực hiện thay đổi này và tại thời điểm đó tôi đối phó với xung đột.

+0

Có vẻ như bạn vẫn đang giải quyết xung đột, chỉ vào một thời điểm khác? Sự hiểu biết của tôi là nó thực sự tốt hơn thế, và rằng có một số xung đột thậm chí sẽ không xảy ra nếu bạn rebase thay vì hợp nhất. Có muốn thấy sự khẳng định của điều đó mặc dù. – Magnus

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