2012-11-27 25 views
84

Giả sử tôi merge git và có xung đột hợp nhất.Force Git luôn chọn phiên bản mới hơn trong quá trình hợp nhất?

Câu hỏi của tôi là: làm cách nào để buộc git luôn chọn phiên bản mã mới hơn trong xung đột nên tôi sẽ không cần giải quyết xung đột bằng tay?

+0

thể trùng lặp của [git pull từ xa .. Tôi có thể buộc nó ghi đè lên chứ không phải là mâu thuẫn báo cáo?] (Http://stackoverflow.com/questions/4785107/git-pull-from-remote-can-i-force-it-to-overwrite-rather-than-report-conflicts) – Rawkode

+0

nhưng tôi muốn thực hiện hợp nhất (không ghi đè các cam kết), nhưng ngoài ra để giải quyết xung đột tự động. – bartek

Trả lời

160

Đây không phải là phiên bản "mới hơn", nhưng bạn có thể yêu cầu git luôn thích phiên bản trên nhánh hiện tại bằng cách sử dụng git merge branch -X ours hoặc muốn sử dụng phiên bản git merge branch -X theirs.

Từ man git-merge:

ours:

This option forces conflicting hunks to be auto-resolved cleanly by favoring our version. Changes from the other tree that do not conflict with our side are reflected to the merge result. For a binary file, the entire contents are taken from our side.

theirs:

This is the opposite of "ours".

+7

'ours'-' theirs' !! Chỉ cần nói nó và bạn hiểu những gì các lệnh nào! Tôi yêu Git! : D – Haywire

+9

lưu ý: nếu bạn đã sử dụng 'git merge branch', bạn sẽ cần' git merge --abort' trước khi bạn có thể làm điều này. –

+1

Không hiệu quả với tôi. Nó vẫn hủy hợp nhất. 'error: Các tệp cây làm việc không được theo dõi sau sẽ bị ghi đè bằng cách hợp nhất:' Tôi thậm chí không biết tại sao các tệp này nằm trong nhánh này ở vị trí đầu tiên, nhưng chúng sẽ bị ghi đè và git từ chối. – mcv

15

tôi sử dụng này,

git fetch --prune 
git reset --hard origin/master 
+1

Giải pháp này đã giúp tôi khắc phục các xung đột chưa được nhấn mạnh khi tất cả những gì tôi muốn là ghi đè bằng nhánh chính. tôi đã sử dụng git reset --hard master (từ địa phương) –

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