2012-10-11 37 views
28

Tôi đang sử dụng phiên bản Gerrit 2.4.2. Tôi có một chi nhánh master và tôi đã tạo một chi nhánh mới, được gọi là newbranch. Sau đó, tôi đã đẩy một số thay đổi vào điều khiển từ xa (của Gerrit) newbranch. Sau khi xác minh trong Gerrit, tôi đã hợp nhất các thay đổi thành newbranch.Làm cách nào để hợp nhất nhánh gerrit với chi nhánh gerrit khác

Không, tôi muốn kết hợp các newbranch-master, gửi thông tin cập nhật master (sáp nhập với những thay đổi từ newbranch), và xóa các chi nhánh newbranch.

tôi đã cố gắng làm điều này:

git fetch 
git checkout master 
git merge newbranch 
git push origin master:refs/for/master 

Nhưng Gerrit gửi lại:

! [remote rejected] master -> refs/for/master (no new changes) 

Tôi nên làm gì?

Trả lời

26

Tình trạng này đã được báo cáo là lỗi trong Gerrit. Dưới đây là một giải pháp/cách giải quyết từ Gerrit's issue tracker:

Để theo sự hiểu biết của tôi, bạn có 2 lựa chọn hiện nay -

  1. Force push to refs/người đứng đầu. Nó chỉ là một tiến nhanh, vì vậy trong lý thuyết tất cả mọi thứ đã được xem xét và xác minh. Không có điểm nào trong việc làm như vậy một lần nữa, vì vậy chỉ cần bỏ qua quá trình đó và đẩy để refs/heads thay vì refs/for.

  2. Hãy tiếp tục và tạo cam kết hợp nhất. Sử dụng 'git merge --no-ff' - điều này sẽ tạo ra một cam kết hợp nhất mặc dù nó không cần thiết trong tình huống chuyển tiếp nhanh của bạn. Sau đó, cam kết hợp nhất có thể được tải lên, xem xét, xác minh và hợp nhất như bình thường.

Công ty của tôi có xu hướng đi kèm với tùy chọn 2. Tôi sẽ đóng tài khoản này là tiền tố, nhưng nếu bạn có bất kỳ đề xuất nào về cách thực hiện điều này tốt hơn, vui lòng cho chúng tôi biết.

5

Nếu hợp nhất là hợp nhất tiến nhanh, không có đối tượng nào tồn tại để đẩy tới gerrit, vì chuyển tiếp nhanh chỉ di chuyển con trỏ nhánh.

Bạn cần phải buộc các merge để tạo ra một đối tượng bằng cách tránh một nhanh về phía trước:

git merge --no-ff 
Các vấn đề liên quan