2016-06-02 15 views
11

Bất cứ khi nào tôi gửi đánh giá cho Gerrit và nếu đánh giá đang chờ xử lý trong một thời gian, tôi nhận được thông báo cannot merge trong Gerrit.Không thể hợp nhất trong Gerrit

Tôi hiểu điều này sắp xảy ra vì ai đó sẽ thay đổi cùng một tệp/tệp và gửi trước tôi. Tôi đang cố gắng giải quyết vấn đề của mình dưới đây.

  1. Bỏ đánh giá hiện tại.
  2. Tạo một chi nhánh địa phương mới, hãy kéo
  3. Cherry chọn thủ my cam kết từ chi nhánh già và gửi cho Gerrit

này hoạt động nhưng việc xem xét ý kiến ​​bất cứ điều gì tôi có sẽ không còn có sẵn và nó là khó cho người đánh giá của tôi kiểm tra lại.

Tôi đang tìm cách xóa cannot merge khỏi bài đánh giá hiện tại. Cảm ơn!

Trả lời

20

Bạn KHÔNG cần phải từ bỏ thay đổi hiện tại trên Gerrit để giải quyết vấn đề "không thể hợp nhất". Tất cả bạn cần làm là:

  1. Cập nhật kho địa phương của bạn (git fetch)
  2. Chạy một hướng dẫn rebase (git rebase)
  3. giải quyết những mâu thuẫn (git mergetool)
  4. Commit (sửa đổi) các kết quả (git commit --amend)
  5. đẩy một nghĩa patchset mới để Gerrit (git push)
+0

Nó hoạt động, Cảm ơn :) –

+0

Chà, làm thế nào bạn có thể sửa đổi, nếu bạn đang trong giai đoạn hợp nhất? – Koshinae

+1

Bạn có thể sửa đổi cam kết của mình bao nhiêu lần tùy ý trước khi thay đổi được gửi. Xem thêm thông tin tại: https://gerrit-review.googlesource.com/Documentation/intro-quick.html –

2

Cách tốt nhất khi làm việc trên cơ sở mã dùng chung git/gerrit là giữ các thay đổi ở mức tối thiểu. Một mặt, theo cách này, cơ hội mà một người nào đó kết hợp các thay đổi của anh ta trước khi bạn làm giảm. Mặt khác, bạn có thể rebase càng sớm càng tốt để các thay đổi có thể được xem xét dễ dàng hơn.

Tôi không chắc chắn điều này trả lời câu hỏi của bạn nhưng tôi thực hiện theo hai quy tắc này và không có vấn đề gì.

+0

Làm cách nào để giữ các thay đổi ở mức tối thiểu? –

+2

Để tôi giữ các thay đổi ở mức tối thiểu là không trộn mã tái cấu trúc với mã mới và chia tách các cam kết theo phạm vi, chẳng hạn như: cam kết refactor, cam kết thực hiện, cam kết thử nghiệm (chủ yếu để tăng mức độ thử nghiệm), Cam kết nâng cấp phụ thuộc và v.v. Một điều nữa là tôi cố giữ cam kết càng cô lập càng tốt (chỉ có chức năng và kiểm thử) – Timotei

4

Hãy thử rebase nút, mà có thể giải quyết hầu hết không thể hợp nhất là kiện. Nếu nó có thể tìm thấy cam kết thích hợp để tự khởi động lại, thì không sao. Nếu không thể, hãy tìm commit cuối cùng của nhánh đích và điền vào ô trống. Đôi khi, trước tiên bạn nên gửi cam kết, mà trên đó không thể hợp nhất có sự phụ thuộc. Nếu nó không thể làm việc bằng cách nào, chỉ cần từ bỏ nó và thực hiện cam kết dựa trên cam kết mới nhất.

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