Có một vài khả năng ở đây, tùy thuộc vào chính xác ý bạn là "thay thế". Bạn gần như chắc chắn đã tiếp cận đúng để bắt đầu - sáp nhập nói chung là con đường để đi. "Các lỗi" mà bạn thấy là các xung đột hợp nhất, có lẽ là. Nếu bạn biết chắc chắn rằng, bất cứ khi nào có một cuộc xung đột, bạn muốn sử dụng phiên bản từ chi nhánh thử nghiệm của bạn, bạn có thể làm:
# resolve conflicts by taking the version from experimental
# non-conflicting content is merged normally
git checkout master
git merge -Xtheirs experimental
Nếu bạn muốn sử dụng các phiên bản trong thực nghiệm cho mọi thứ, không chỉ nơi có xung đột, có rất nhiều cách (không thực sự là một chiến lược hợp nhất cho việc này). Cách đơn giản nhất:
# do the merge the other way around
git checkout experimental
git merge -s ours master
git checkout master
git merge experimental
# do the merge the right way
git checkout master
git merge --no-commit experimental # merge, but stop before committing
git checkout experimental . # check out content, but don't switch branch
git commit # commit the merge
Những cách khác đã gợi ý (reset --hard
, branch -M
) sẽ làm việc, loại, nhưng vì họ không tạo ra một hợp nhất cam kết, bạn di chuyển chi nhánh tổng thể một cách phi nhanh về phía trước, có khả năng gây đau đầu cho những người khác cần rút khỏi repo này. Nói chung, tôi muốn nói đó là câu trả lời đúng chỉ khi những nhánh này chưa được công bố.
Bạn gặp phải loại lỗi nào? Và bạn có muốn * hợp nhất * các thay đổi trong bản gốc hay chỉ thay thế bản gốc bằng nhánh thử nghiệm? – poke
Tôi đoán các lỗi thực sự là "xung đột" –
lựa chọn từ khó. Tôi nên nói những xung đột. Nhưng có rất nhiều và tôi không thực sự muốn giải quyết chúng. –