2011-02-02 35 views
5

Tôi cảm thấy tôi đang tiếp cận tất cả điều này sai.Làm cách nào để giải quyết xung đột trong khi hợp nhất và cập nhật tệp trong git?

Tôi làm việc như một phần của nhóm và chúng tôi sử dụng git. Bây giờ, khi tôi kéo thông tin cập nhật từ nhóm của tôi, rõ ràng là xung đột theo thời gian - git dường như chèn tải văn bản vào các tệp không tốt.

Dù sao, có cách nào tốt để quản lý các xung đột này không (tôi đang ở trên cửa sổ).

Tôi đã sử dụng winmerge, nhưng từ những gì tôi có thể thấy, Nó chỉ có thể so sánh 2 thư mục. Nó làm cho việc giải quyết xung đột trở nên dễ dàng, nhưng đòi hỏi tôi phải có 2 trạng thái của nguồn ở 2 vị trí khác nhau.

Có ai biết cách tốt hơn để làm điều này hay cách tích hợp cả hai?

Trả lời

5

Bạn có thể xác định bộ công cụ cho Git được gửi cho mỗi tệp xung đột. Điều này hoạt động tốt nếu bạn chỉ có một số lượng nhỏ các xung đột. Một số liên kết: Using Beyond Compare, discussion about this on SO, more general instructionsman page.

Có một số gói tập lệnh có thể được sử dụng nếu bạn có nhiều thay đổi.

Về cơ bản những gì bạn cần làm là nhận được ví dụ: Ngoài So sánh để hoạt động trong Linux:

git config --global merge.conflictstyle=diff3 
git config --global merge.tool=bc3 
git config --global mergetool.bc3.cmd=/usr/bin/bcompare $LOCAL $REMOTE $BASE $MERGED 
git config --global mergetool.bc3.trustexitcode=true 

Bạn có thể tìm thông tin trên các công cụ khác một cách dễ dàng và Git đã hỗ trợ một số công cụ.

+0

này là tốt quá: http://blog.wuwon.id.au/2010/09/painless-merge-conflict-resolution-in.html – Ben

+0

Bạn đang trộn lẫn việc sử dụng hỗ trợ tích hợp cho BC3 với cấu hình chung cho bất kỳ công cụ hợp nhất nào. * Hoặc là * bạn sử dụng 'merge.tool = bc3' và, nếu' bcompare' không có trong 'PATH' của bạn, cũng' mergetool.bc3.path =/usr/bin/bcompare' (không có đối số dòng lệnh ở đây). * Hoặc * bạn sử dụng 'mergetool.bc3.cmd' (với đường dẫn đầy đủ và các đối số như trong ví dụ của bạn) và chỉ định các thiết lập bổ sung như' mergetool.bc3.trustexitcode = true'. – sschuberth

0

Dưới đây là một câu hỏi có liên quan với câu trả lời đó cũng có thể giúp bạn:

Git on Windows: How do you set up a mergetool?

Tôi đã đích thân đi cho p4merge (miễn phí), với các thiết lập sau đây (mà làm việc cho tôi, nó có thể không được cách 'đúng' để làm việc):

trong C:\Program Files\Git\cmd, tôi có một tập tin git-merge.sh mà trông như thế này:

#!/bin/sh 

# Passing the following parameters to mergetool: 
# local base remote merge_result 

base=$1 
alocal=$2 
remote=$3 
result=$4 

if [ -f $base ] 
then 
    p4merge.exe -dl "$base" "$alocal" "$remote" "$result" 
else 
    p4merge.exe -dl "$result" "$alocal" "$remote" "$result" 
fi

Trong C:\Documents and Settings\me tôi .gitconfig chứa các phần sau:

[merge]  
    keepBackup = false 
    tool = p4merge 
[mergetool "p4merge"] 
    cmd = \"c:/Program Files/Perforce/p4merge.exe\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\" 
    keepTemporaries = false 
    trustExitCode = false 
    keepBackup = false 
    path = C:/Program Files/Perforce/p4merge.exe 
[mergetool] 
    keepBackup = false 
Các vấn đề liên quan