2015-08-12 12 views
16

Đôi khi tôi cố gắng để kết hợp các ngã ba đầu vào ngã ba cơ sở của tôi, hoặc ngã ba cơ sở của tôi vào ngã ba đầu, tôi nhận được thông báo sau trên GitHub:GitHub "không thể tự động hợp nhất"?

"có thể không tự động hợp nhất Đừng lo lắng. , bạn vẫn có thể tạo yêu cầu kéo. "

Làm cách nào để xem xung đột, nếu có bất kỳ điều gì cho điều này?

Tôi đã đọc khoảng 10 ví dụ khác nhau với các lệnh khác nhau nhưng tôi không thể biết tên trong ví dụ áp dụng cho tình huống của mình như tên khác nhau cho căn cứ, nhánh, nhánh, v.v.

Sau tất cả điều này, tôi không thể tin rằng không có lệnh bạn có thể nhập để xem xung đột, chỉnh sửa xung đột và tiếp tục với việc hợp nhất. Nếu có, tôi chưa tìm thấy nó.

Trả lời

18

Điều đó có nghĩa là yêu cầu kéo của bạn không thể được hợp nhất vào thượng lưu mà không có (các) chủ sở hữu ngược dòng phải giải quyết xung đột hợp nhất.

Độ phân giải ở đây sẽ là để bạn thực hiện tìm nạp từ thượng nguồn và sau đó giải quyết xung đột hợp nhất từ ​​phía trên. Tại thời điểm này, nếu bạn giải quyết được các xung đột từ phía trên và sau đó tạo yêu cầu kéo, ngược dòng sẽ có thể tự động hợp nhất trong yêu cầu kéo của bạn mà không có bất kỳ xung đột nào (miễn là không có cam kết nào ở phía trên giữa bạn giải quyết cục bộ thượng nguồn hợp nhất các xung đột và hợp nhất vào địa phương/ngã ba của bạn và sau đó tạo yêu cầu kéo).

Hãy sử dụng GitHub làm ví dụ ở đây để lưu trữ repo từ xa.

OriginalAccount \ repo1 - nói đây là kho lưu trữ ban đầu (chúng tôi sẽ đề cập đến điều này như "lội ngược dòng")

tài khoảncủa bạn \ repo1 - đây sẽ là lực lượng của bạn trong những kho lưu trữ (đây là điển hình là điều khiển từ xa "origin")

repo1local - đây là bản sao lưu trữ cục bộ của bạn.

Khi bạn tạo một yêu cầu kéo từ tài khoảncủa bạn \ repo1 để OriginalAccount \ repo1 (hầu như từ gốc-thượng nguồn), bởi có thông điệp mà bạn không thể hợp nhất tự động có nghĩa là OriginalAccount \ repo1 cam kết rằng Tài khoản của bạn \ repo1 không có (cam kết có nhiều khả năng nhất được đẩy sau khi bạn chia đôi).

Giải pháp ở đây sẽ được lấy từ thượng nguồn đến kho lưu trữ tại địa phương (từ OriginalAccount \ repo1 để repo địa phương của bạn) và giải quyết bất kỳ xung đột nhập tại địa phương. Sau đó, đẩy các cam kết của bạn đến Tài khoản của bạn \ repo1. Tại thời điểm này, bạn sẽ có thể tạo yêu cầu kéo của mình để có thể tự động được hợp nhất thành OriginalAccount \ repo1.

Lưu ý: Mặc dù hầu hết các dịch vụ Git sẽ không ngăn bạn tiếp tục yêu cầu các cộng tác viên thượng nguồn giải quyết xung đột hợp nhất, thực hành tốt và nghi thức tốt để đảm bảo yêu cầu kéo của bạn được hợp nhất cuộc xung đột. Hãy suy nghĩ về nó như thế này, bạn nên làm công việc giải quyết xung đột hợp nhất, thay vì có những người đóng góp ở thượng lưu thực hiện công việc đó từ sự đóng góp của bạn.

+1

Tôi thậm chí không biết điều này có nghĩa là "giải quyết xung đột từ thượng nguồn và sau đó tạo yêu cầu kéo" – user2568374

+0

@ user2568374 Tôi vừa chỉnh sửa trong ví dụ minh họa. Hy vọng rằng làm sáng tỏ bất kỳ sự nhầm lẫn. –

+0

Bị mất. Điều này có thể được thực hiện với Github? Tôi đã thử kéo đầu ngã ba để trái hợp nhất vuông và chi nhánh của tôi để hợp nhất vuông và nhấp vào hợp nhất các chi nhánh và đồng bộ hóa nhưng điều này vẫn không khắc phục được vấn đề. – user2568374

0

Bạn nhận được xung đột khi mã của bạn được hợp nhất vào repo sẽ xung đột với mã đã có ở đó. Nếu yêu cầu kéo của bạn được chấp nhận, người quản lý repo sẽ giải quyết chúng.

+1

người quản lý repo là gì? – user2568374

1

Cách đơn giản để làm điều này, và bởi họ bằng cách nào, tôi xứng đáng $ 1 từ bất cứ ai tìm thấy hữu ích này, là sử dụng Github theo cách này:

Trong Github chọn tab ngành, nhấp vào nút xem merge, kéo của bạn đầu ngã ba vào hộp bên trái, kéo ngã ba cơ sở của bạn vào hộp bên phải. Nhấp vào nút Hợp nhất chi nhánh. Chọn tab thay đổi. Chọn từng tệp có xung đột. xem '< < < < < <' Chỉnh sửa tệp trong trình xem bên ngoài để giữ mã headfork và thêm mã của bạn vào đó. Nhấp vào Lưu trên (các) tệp. Nhấp vào nút Cam kết. Nhấp vào đồng bộ hóa. Truy cập trang web Git và thử hợp nhất ngã ba cơ sở của bạn để ngã ba lần nữa. Nó sẽ không còn hiển thị thông báo gốc

+0

kể từ khi tôi thêm điều này, Github đã thay đổi giao diện của họ. Các khái niệm nên được như nhau mặc dù. Sẽ cập nhật với giải pháp mới cho giao diện mới khi tôi gặp lại vấn đề này – user2568374

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