Có 4 file liên quan đến:
$LOCAL
Các tập tin trên nhánh bạn đang hợp nhất; ảnh hưởng bởi quá trình hợp nhất khi hiển thị cho bạn
$REMOTE
Các tập tin trên các chi nhánh từ nơi bạn đang sáp nhập; ảnh hưởng bởi quá trình hợp nhất khi hiển thị cho bạn
$BASE
Các tổ tiên chung của $ LOCAL và $ REMOTE, tức là. điểm mà hai chi nhánh bắt đầu chuyển hướng tập tin được xem xét; ảnh hưởng bởi quá trình hợp nhất khi hiển thị cho bạn
$MERGED
Các tập tin phần sáp nhập, với những xung đột; đây là tập tin chỉ xúc động bởi sự quá trình hợp nhất và, trên thực tế, không bao giờ hiển thị cho bạn trong meld
File $MERGED
là một trong đó chứa các <<<<<<
, >>>>>>
, =====
(và, có lẽ , ||||||
) điểm đánh dấu (để phân định xung đột). là tệp bạn chỉnh sửa theo cách thủ công để sửa các xung đột.
Chỉnh sửa xung đột thủ công và chỉnh sửa xung đột trực quan được thực hiện trên các tệp khác nhau và trình bày các thông tin khác nhau.
Khi sử dụng mergetool (giả meld
), các tập tin được nhìn thấy trong đó là: $LOCAL
, $BASE
, $REMOTE
. Lưu ý rằng bạn không thấy tệp $MERGED
, mặc dù điều này được chuyển thành một tham số ẩn thành meld
để ghi kết quả của bản chỉnh sửa ở đó.
Nói cách khác, trong meld
, bạn đang chỉnh sửa các tập tin ở giữa, các tập tin $BASE
, và bạn chọn tất cả các thay đổi từ trái hoặc từ bên phải tay.Nó là một tập tin sạch sẽ, không được xúc động bởi quá trình hợp nhất. Nhược điểm duy nhất là, khi bạn lưu, bạn không lưu vào tệp $BASE
, nhưng trong tham số ẩn thứ tư của meld
, đó là tệp $MERGED
(mà bạn thậm chí không thấy). Tệp $BASE
không không chứa bất kỳ xung đột hoặc hợp nhất thành công nào do không phải là tệp $MERGED
.
Trong chỉnh sửa hình ảnh, khi trình bày cho bạn các tập tin $BASE
(thay vì các tập tin $MERGED
) git
về cơ bản loại bỏ tất cả những nỗ lực của mình để thực hiện việc sáp nhập (những nỗ lực có thể nhìn thấy, nếu bạn muốn, trong file sáp nhập $) và cho phép bạn hoàn toàn thực hiện việc hợp nhất từ đầu.
Điểm mấu chốt là trong sổ tay và hình ảnh xung đột kết hợp bạn không nhìn vào các tập tin giống nhau, nhưng kết quả cuối cùng được viết trong cùng một tệp (có nghĩa là các tập tin $MERGED
).
Đợt điều chỉnh thủ công của các cuộc xung đột được thực hiện trên $MERGED
vì git
không có nghĩa là để giới thiệu bạn ba tác phẩm, vì vậy nó squashes thông tin từ ba file ($LOCAL
, $BASE
, $REMOTE
) ở chỗ $MERGED
tập tin.
Nhưng những công cụ trực quan có phương tiện để hiển thị cho bạn ba tập tin: họ chỉ cho bạn những $LOCAL
, $BASE
, $REMOTE
tập tin. Bạn đang chọn thay đổi từ các tệp $LOCAL
và $REMOTE
và bạn sẽ đưa những tệp đó vào tệp $BASE
, hoàn toàn xây dựng lại và thậm chí ghi đè nỗ lực sáp nhập không thành công đó là tệp $MERGED
.
Một số người hiểu rõ hơn về các khối xung đột trong tệp ich không thể tự động hợp nhất nếu chúng có tùy chọn cấu hình 'merge.conflictstyle' được đặt thành' diff3' thay vì 'merge' mặc định. – kostix
Tôi thực sự không thấy các bài hát HEAD, <<< và ===. Trong trường hợp bạn cung cấp cửa sổ ở giữa sẽ trống. Nhưng đó chỉ là một lưu ý cho những người khác, thx cho câu trả lời của bạn. – tsusanka
Nếu bạn không thấy các dấu hiệu 'HEAD',' <<<<< 'và' ===== ', điều đó có nghĩa là không có xung đột gì cả. Trong trường hợp này, cửa sổ ở giữa sẽ không trống, nó sẽ hiển thị kết quả hợp nhất, nhưng sẽ không có phần "đỏ" –