2011-11-30 25 views
5

Tôi vẫn chưa có cách xác nhận để tạo lại điều này, nhưng trong trường hợp đây là một số vấn đề hãy hỏi nó đi. Điều gì xảy ra git thường tạo ra các cuộc xung đột như thế này:Tại sao git đôi khi đánh dấu các dòng được thêm dưới dạng các dòng thay đổi (tức là xung đột trống trên một đoạn mã được thêm)

<<<<<<< HEAD 
    } // action_do_add 
======= 
    } // action_do_add 
...lots of code here... 
>>>>>>> some_branch 

Vì vậy, thay vì nhận thấy rằng tôi chỉ cần thêm một mảnh mới của mã, git nghĩ rằng tôi sửa đổi toàn bộ dòng thay thế. Điều này đôi khi xảy ra ở giữa tệp nhưng thường xuyên nhất - ở cuối tệp. Đoán của tôi là nó có thể có một cái gì đó để làm với các ký tự end-of-line nhưng tôi chưa phải chạy thử nghiệm để xác nhận điều đó. Có ai có cùng một vấn đề và nếu có, làm thế nào để bạn sửa chữa nó?

+0

có lẽ, chỉ khác biệt về không gian? –

+0

Tôi đã kiểm tra và dường như không phải như vậy. Cả hai dòng có cùng một số không gian, vì vậy nó không giống như có một số không gian ẩn ở cuối một dòng. – Eugene

+0

Kết thúc dòng khác nhau? Các dòng này có giống nhau trong trình chỉnh sửa hex không? – Rudi

Trả lời

5

Khi hợp nhất, git kiểm tra sự khác biệt trong ngữ cảnh với các đường xung quanh. Hãy xem xét mã này:

def a 
    do_something_a 
end 

def b 
    do_something_b 
end 

def c 
    do_something_c 
end 

Khi một chi nhánh thay đổi một cái gì đó trong phương pháp a (hoặc xóa nó), và một chi nhánh khác thay đổi một cái gì đó trong phương pháp c (hoặc xóa nó), bạn vẫn có bối cảnh phương pháp b cho cả diffs . Đó là lý do tại sao các thay đổi có thể sẽ hợp nhất mà không có xung đột.

Tuy nhiên, nếu bạn có một cái gì đó như thế này:

def a 
    do_something_a 
end 

def c 
    do_something_c 
end 

bạn sẽ rất có thể kết thúc với cuộc xung đột khi chỉnh sửa một phương pháp trong một chi nhánh và một ở chi nhánh khác bởi vì bạn đã phá vỡ bối cảnh tương ứng của diff ở chi nhánh khác.

Đó cũng là lý do tại sao nó xảy ra thường xuyên hơn ở cuối tệp — bởi vì chỉ có ngữ cảnh ở trên khác biệt, nhưng không có gì bên dưới nó.

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