Hãy tưởng tượng rằng chúng ta có một master
chi nhánh.
Sau đó, chúng tôi tạo ra một newbranch
git checkout -b newbranch
và thực hiện hai cam kết mới thành newbranch
: commit1 và commit2
Sau đó, chúng tôi chuyển sang làm chủ và thực hiện cherry-pick
git checkout master
git cherry-pick hash_of_commit1
Nhìn vào gitk
chúng ta thấy rằng commit1 và phiên bản anh đào của nó có các giá trị băm khác nhau, vì vậy về mặt kỹ thuật, chúng là hai cam kết khác nhau.
Cuối cùng, chúng tôi hợp nhất newbranch
thành master
:
git merge newbranch
và thấy rằng hai cam kết với các giá trị băm khác nhau đã được hợp nhất mà không gặp vấn đề gì mặc dù chúng ngụ ý rằng các thay đổi tương tự nên được áp dụng hai lần, do đó một trong số chúng sẽ thất bại.
Có phải git thực sự phân tích thông minh nội dung của cam kết trong khi hợp nhất và quyết định rằng những thay đổi không nên được áp dụng hai lần hoặc những cam kết này được đánh dấu nội bộ như được liên kết với nhau?