Thay đổi là xung đột là khi 2 người đã thực hiện thay đổi cho cùng một tệp theo cách mà hai thay đổi không thể được giải quyết tự động.
1) Cho phép bắt đầu bằng ví dụ về quá trình hợp nhất không xung đột.
tập tin gốc
line1
line2
line3
Blogger A thay đổi nó như thế này:
line1CHANGED
line2
line3
Person B thay đổi nó như thế này:
line1
line2CHANGED
line3
Khi những đều kiểm tra trong và sáp nhập , không có xung đột vì nó có thể dễ dàng giải quyết để tạo ra tệp cuối cùng này:
line1CHANGED
line2CHANGED
line3
Subversion sẽ xử lý việc này tự động dưới dạng hợp nhất.
2) Bây giờ là ví dụ về các thay đổi xung đột.
gốc tập tin
line1
line2
line3
Blogger A thay đổi nó như thế này:
line1CHANGED_BY_A
line2
line3
Person B thay đổi nó như thế này:
line1CHANGED_BY_B
line2
line3
này không thể được sáp nhập tự động, vì vậy nó là một cuộc xung đột. Bạn sẽ cần giải quyết, bằng cách chấp nhận thay đổi của người A hoặc người B thay đổi. Trong trường hợp này subversion sẽ cảnh báo bạn về các xung đột và yêu cầu quyết định từ bạn về cách giải quyết chúng.
3) Cuối cùng, bạn có thể có cả hai thay đổi xung đột và không xung đột trong cùng một sửa đổi.
tập tin gốc
line1
line2
line3
Blogger A thay đổi nó như thế này:
line1CHANGED_BY_A
line2ALSO_CHANGED_BY_A
line3
Person B thay đổi nó như thế này:
line1CHANGED_BY_B
line2
line3ALSO_CHANGED_BY_B
Bây giờ, với ví dụ này, cả hai người đã thay đổi tệp và có thay đổi xung đột trên dòng 1 phải được giải quyết, nhưng dòng s 2 & 3 là những thay đổi không mâu thuẫn và có thể được giải quyết tự động.
Bạn có thể chọn giải quyết vấn đề này theo nhiều cách.
Thứ nhất, bạn hoàn toàn có thể chấp nhận tệp của A hoặc B và loại bỏ tệp còn lại. Điều này sẽ dẫn đến những thay đổi không xung đột với những người khác bị mất. Này, bạn chọn hoàn toàn giải quyết bằng A, tập cuối cùng của bạn sẽ là:
line1CHANGED_BY_A
line2ALSO_CHANGED_BY_A
line3
(Chính xác tập tin A, và tất cả những thay đổi này bằng B sẽ bị loại bỏ)
Thứ hai, bạn có thể giải quyết chỉ thay đổi mâu thuẫn, và vẫn giữ lại tất cả các thay đổi không xung đột.Đây là bạn sẽ chọn thay đổi của A hoặc B cho dòng đầu tiên, và vẫn nhận được cả hai thay đổi của dòng khác, từ cả hai người. Vì vậy, nói ví dụ bạn chọn để giải quyết mâu thuẫn bằng A, tập cuối cùng của bạn sẽ là:
line1CHANGED_BY_A
line2ALSO_CHANGED_BY_A
line3ALSO_CHANGED_BY_B
Alternative bạn có thể sử dụng các công cụ như KDiff có hỗ trợ xem xét của mỗi xung đột riêng (vì tất nhiên bạn có thể có những thay đổi mutliple, cả xung đột lẫn không xung đột, trong cùng một tệp), điều này sẽ cho phép bạn chọn các phương pháp phân giải khác nhau cho mỗi tệp.
Nếu bạn gặp khó khăn khi tìm hiểu cách hợp nhất với các công cụ dòng lệnh, tôi khuyên bạn nên xem KDiff (hoặc một số công cụ phối hợp/khác GUI) khi chúng hiển thị các tệp cùng với nhau (cùng với bản gốc) và cho phép bạn trực quan những gì mỗi hành động giải quyết sẽ làm.
Cảm ơn bạn đã trả lời chi tiết! Tôi đã có thể tái tạo các ví dụ của bạn trong một dự án svn và cuối cùng tôi đã hiểu được sự khác biệt giữa các lệnh mâu thuẫn và các lệnh đầy đủ của tôi! =) –