2014-09-29 19 views
14

tôi có 2 chi nhánh - masterdevelopxung đột Git trong pull yêu cầu

tôi đã và đang làm một số yêu cầu kéo trong ngành develop anh nơi mà nó chứa 5 mặt hàng, trong đó nó cũng giống như số lượng các mục trong master .

Tuy nhiên, ai đó đã thực hiện một số cam kết và pushed trong một vài mục khác vào chi nhánh master và do đó hiện tại nó có 8 mục.

Như yêu cầu kéo của tôi trong develop vẫn chưa được phê duyệt/sáp nhập, bất cứ khi nào tôi cố gắng cập nhật yêu cầu kéo của tôi, tôi nhận được thông báo nói rằng This pull request can't be merged. You will need to resolve conflicts to be able to merge và yêu cầu tôi phải làm như sau:

git fetch origin master 
git checkout develop 
git merge FETCH_HEAD 
git commit 
git push origin HEAD 

Và điều này xảy ra sau khi tôi đã 'đẩy' ra khỏi cam kết của tôi, làm cho tôi bối rối ở lần. Sau đó, tôi nhận ra rằng nó yêu cầu tôi phải thêm lại và cam kết thêm 3 mặt hàng mới. Vì vậy, điều này có nghĩa là tôi phải đảm bảo rằng các mục và nội dung giữa 2 chi nhánh của tôi phải giống như mọi khi? Tôi đã luôn luôn sử dụng git pull/fetch nhưng sẽ có một cách tốt hơn cho tôi để đảm bảo?

+0

Không, yêu cầu bạn hợp nhất. Bạn dường như bị nhầm lẫn về cách thức các nhánh hoạt động - xem [chương liên quan trong tài liệu] (http://git-scm.com/book/en/Git-Branching) – remram

+0

@remram Có lẽ tôi thực sự bối rối. Nhưng ngay cả như vậy, tại sao nó lại yêu cầu tôi hợp nhất thầy vào phát triển? Thông thường nó là cách khác vòng cho tôi – dissidia

+0

Nếu bạn hợp nhất thạc sĩ trong phát triển, sau đó github sẽ có thể tự động hợp nhất phát triển trong tổng thể. – remram

Trả lời

17

Điều này có nghĩa là GitHub muốn hợp nhất chi nhánh PR của bạn thành master, nhưng không thể, vì có xung đột. Như bạn đã thảo luận trong phần bình luận câu hỏi, cách tốt nhất để giải quyết vấn đề này (thường là) là hợp nhất chi nhánh master của bạn thành develop trên dòng lệnh. Điều đó sẽ cho bạn thấy những xung đột và yêu cầu bạn giải quyết chúng. Khi bạn đã hoàn thành và đẩy hợp nhất đó, PR sẽ được hợp nhất trở lại thành master bằng nút màu xanh lục trên GitHub.

Bạn có thể chỉ cần hợp nhất chi nhánh deploy của bạn vào master (điều mà tôi nhận thấy có vẻ hợp lý hơn một chút). Trong trường hợp đó, bạn sẽ bỏ qua toàn bộ PR. Bạn sẽ phải đóng PR "unmerged", và một cách riêng biệt bạn sẽ tự đẩy hợp nhất cam kết master.

Bằng cách làm nó theo cách đầu tiên,

  1. bạn thực hiện một đường mòn kiểm toán tốt hơn bằng cách sáp nhập để làm chủ trên GitHub, sử dụng PR;
  2. bạn cung cấp cho nhóm của bạn một cơ hội để xem xét mã của bạn sau khi hợp nhất, trước khi nó được truy cập trên master; và
  3. nếu bạn có các kiểm tra tự động (như Travis CI hoặc CircleCI) kiểm tra PR, bạn cho họ cơ hội để chạy mã được hợp nhất của bạn.
+0

Điều đó có ý nghĩa với tôi, đặc biệt là trong trường hợp của chi nhánh PR, trong đó nó hoàn toàn khác với những gì tôi đã làm khi nhánh 'develop' của tôi đang được hợp nhất thành' master' giống như bạn đã đề cập. – dissidia

+0

Đúng vậy. Nếu bạn có một nhánh 'phát triển' duy nhất định kỳ hợp nhất thành' master', bạn có thể làm tốt hơn để không thực hiện yêu cầu kéo từ nhánh đó. Nếu muốn, bạn có thể thực hiện các yêu cầu kéo từ các nhánh chủ đề cụ thể đến 'deploy', và sau đó hợp nhất' deploy' thành 'master' tại dòng lệnh khi bạn sẵn sàng di chuyển một tập hợp các thay đổi. – Peeja

+0

Liên kết này cung cấp một cái nhìn tổng quan về cách để đạt được tuyên bố sáp nhập của Peeja vào phát triển: https://confluence.atlassian.com/bitbucket/resolve-merge-conflicts-704414003.html – Paul

0

Tôi đã giải quyết nó bằng giao diện eclipse-git như được mô tả bên dưới.

1- Giữ tất cả các thay đổi đã sẵn sàng trong nhánh 'dev' và đẩy chúng vào git.

2- thanh toán đến nhánh 'chính' và kéo tất cả thay đổi.

3- Chuyển đến 'Chế độ xem kho lưu trữ Git -> mở rộng thư mục cục bộ' và nhấp chuột phải vào nhánh 'chính' và nhấp vào tùy chọn 'hợp nhất'.

4- Nó sẽ mở hiển thị tất cả những xung đột với các đốm màu đỏ trong cửa sổ 'Git dàn dựng'.

5- Bây giờ, nhấp chuột phải vào từng điểm màu đỏ và nhấp -> 'thay thế bằng chỉ mục git'. đốm đỏ sẽ biến mất ngay bây giờ.

6- sau khi thực hiện việc này cho tất cả các điểm màu đỏ, cam kết hợp nhất của bạn từ nút bên phải.

7-done.

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