2013-03-06 39 views
35

git repo của tôi trông như thế này:Git sáp nhập một chi nhánh thành một nhánh khác là hợp nhất hai chiều?

  _ branch_a 
     /
master/
     \_ branch_b 

Bây giờ tôi muốn kết hợp branch_b vào branch_a, không hoặc chi nhánh thành bậc thầy.

Vì vậy, tôi đã làm

git checkout branch_a 
git merge branch_b 

Và git đi và tìm thấy một vài mâu thuẫn.

Khi tôi làm git mergetool sử dụng meld những gì tôi nhận được trên giao diện điều khiển là

{local}: modified file 
{remote}: modified file 

và một cửa sổ hiển thị chỉ local và remote.

Những gì tôi muốn biết là:

  1. Tại sao không là cơ sở chia sẻ về những gì là trong tổng thể hiển thị?

  2. Giữa LOCAL và REMOTE, tôi phải chỉnh sửa cái nào?

+7

Nếu bạn muốn hợp nhất A thành B, lệnh chính xác là 'git checkout branch_b git merge branch_a' – iberbeu

+0

Bạn đang sử dụng phiên bản git nào? Khi tôi sử dụng meld như một mergetool nó trình bày nó như là một cách kết hợp ba chiều của cơ sở chung. Tôi chưa bao giờ thấy nó chỉ hiển thị hai tệp, vì vậy tôi không biết bạn sẽ sửa đổi điều gì. – qqx

+0

git phiên bản 1.8.1.2 – EMiller

Trả lời

11

Nếu bạn kết hợp nhánh A vào nhánh B xung đột bạn nhận được từ sự khác biệt giữa cả hai nhánh chứ không phải sự khác biệt với tổng thể. thực hiện git diff trong A hoặc B sẽ cung cấp cho bạn tuy nhiên khác với học chuyên vì nó là tổ tiên

Thông thường địa phương chi nhánh nên là một trong những bạn đang sáp nhập vàoxa một trong những bạn muốn hợp nhất. Dù sao trong máy tính của bạn, bạn sẽ chỉ có một bản sao của tệp để chỉ sửa đổi nó

+0

Về mặt kỹ thuật, chi nhánh 'master' sẽ không được tham gia vào quá trình hợp nhất đó. Tuy nhiên, cam kết mà chủ điểm trong trường hợp đó sẽ là vì nó là tổ tiên chung. – qqx

+0

Sự khác biệt của nhánh (a hoặc b) được lấy từ phép so sánh với tổ tiên (chính trong trường hợp này) là đúng, nhưng khi bạn hợp nhất A thành B thì xung đột được đưa ra bởi các nhánh đó chứ không phải bởi master. Đó là điều tôi muốn nói. Tôi đã chỉnh sửa câu trả lời của mình – iberbeu

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