2012-06-28 19 views
6

Khi tôi hợp nhất các thay đổi lớn, git thường bị nhầm lẫn vô vọng vì nó không sử dụng đủ các dòng ngữ cảnh. Nó bị lẫn lộn giữa kết thúc tương tự nhìn của hai chương trình con khác nhau mà cả hai xảy ra để kết thúc với:Trong git, làm cách nào để tăng ngữ cảnh cho việc hợp nhất?

. 
return 1; 
. 
} 

(dots sử dụng ở đây để đại diện cho dòng trống)

Khi tôi sử dụng 'git diff', tôi có thể nói -U20 để xem 20 dòng ngữ cảnh. Nhưng tôi có thể nói git để sử dụng lá cờ này khi nó kết hợp, quá?

câu trả lời có thể được liên quan đến hợp nhất các chiến lược/tùy chọn, chẳng hạn như:

git merge -s recursive -X patience [branch] 
+0

Câu hỏi liên quan về sự khác biệt về sự kiên nhẫn: http://stackoverflow.com/questions/4045017/what-is-git-diff-patience-for –

Trả lời

4

Để theo sự hiểu biết của tôi, không có cách nào để tăng dòng bối cảnh trong một hợp nhất. Thuật toán bảo mật kiên nhẫn có nghĩa vụ xử lý trường hợp sử dụng của bạn tốt hơn. Git-merge (1) người đàn ông mô tả nó như sau:

Với tùy chọn này, merge-đệ quy dành thêm một chút thời gian để tránh mismerges rằng đôi khi xảy ra do không quan trọng phù hợp với dòng (ví dụ, niềng răng từ biệt chức năng). Sử dụng số này khi các chi nhánh được hợp nhất đã phân tách một cách dữ dội.

Vì điều này có vẻ chính xác như trường hợp bạn mô tả, sự kiên nhẫn dường như được thiết kế riêng để giúp bạn. Bạn có thể dùng thử trên một nhánh ném đi như thế:

git checkout -b temp_merge_branch master 
git merge --strategy-option=patience other_branch 

Nếu hợp nhất hoạt động sạch, bạn có thể tua nhanh nhánh chính của bạn với kết quả. Nếu không, bạn chỉ có thể vứt bỏ nhánh tạm thời và tìm kiếm các giải pháp thay thế khác.

4

Sử dụng các thiết lập này để có được diffs kiên nhẫn với năm dòng của bối cảnh ở khắp mọi nơi:

git config --global diff.algorithm patience 
git config --global diff.context 5 

Nếu bạn sử dụng --color-words thường, điều này rất hữu ích cũng như:

git config --global diff.wordRegex '[A-z0-9_]+|[^[:space:]]' 

Thiết lập đầu tiên đòi hỏi Git 1.8.2.

+1

Đối với một bộ hẹn giờ, bạn có thể sử dụng 'git -c diff.context = 5 merge - Xpatience ' –

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