Tôi đang cố gắng tìm hiểu cách sử dụng git cherry pick, tôi đọc các trang hướng dẫn sử dụng git
trả về bằng cách thực hiện git cherry-pick --help
nhưng điều đó dường như không giúp ích gì. Tôi sẽ cố gắng giải thích vấn đề dưới đây. Tôi có hai chi nhánh master
và other
.Git cherry-pick gây ra xung đột hợp nhất trong khi hợp nhất không
Mở chi nhánh master
Các cam kết lịch sử là
0x2 Second commit from master branch
0x1 Initial commit
Và các tập tin chỉ trong kho mà tôi đang theo dõi readme
có các nội dung sau
Some text
Mở chi nhánh other
Lịch sử cam kết là
0x5 CHECKPOINT, going to cherry-pick onto master
0x4 second commit from branch other
0x3 first commit from other branch:
0x2 Second commit from master branch
0x1 Initial commit
Và nội dung của file readme
là
Some text.
Adding some text from other branch. Adding some more text.
Going to cherry-pick this commit.
Các thư mục làm việc sạch sẽ trên cả hai chi nhánh không có thay đổi được theo dõi. Từ thời điểm này, khi tôi chuyển sang nhánh chính và hợp nhất với git merge other
quá trình hợp nhất diễn ra một cách duyên dáng mà không có xung đột hợp nhất. Nhưng khi tôi cố gắng git cherry-pick 0x5
có một cuộc xung đột nhập, tôi nhận được kết quả sau từ git
error: could not apply 0x5... CHECKPOINT, going to cherry-pick onto master
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Và readme
tập tin có các nội dung sau
<<<<<<< HEAD
Some text
=======
Some text.
Adding some text from other branch. Adding some more text.
Going to cherry-pick this commit.
>>>>>>> 0x5... CHECKPOINT, going to cherry-pick onto master
Tại sao lại có cuộc xung đột nhập này? Tôi đang cố gắng hiểu tại sao nó xảy ra. Không nên cherry-pick
ing giống như cố gắng thực hiện tất cả các chỉnh sửa được thực hiện trên cam kết sẽ là cherry-pick
tự chỉnh sửa và sau đó cam kết thay đổi đó vào chi nhánh (master
trong trường hợp này)?
Ngoài ra khi chính xác có xung đột hợp nhất trong git
? Tôi dường như nhận được chúng vào những thời điểm kỳ lạ. Việc triển khai này có phụ thuộc không (ví dụ phụ thuộc vào thuật toán được sử dụng để hợp nhất)?
Cảm ơn bạn!
Nhưng nếu tôi tiếp tục và tự thực hiện các thay đổi sẽ được thực hiện nếu lựa chọn anh đào đi qua thì không có vấn đề như vậy, tại sao lại có vấn đề khi tôi chọn anh đào? Không nên cả hai ngữ nghĩa giống nhau? – Curious
@ Git git rất ngu ngốc khi thực hiện sáp nhập (mà anh đào cũng chọn). Nó sẽ rên rỉ về bất kỳ điều nhỏ và yêu cầu bạn để xử lý nó cho mình. Đó là gây phiền nhiễu nhưng sau đó một lần nữa, nó tốt hơn không cho nó để đoán nếu nó không biết chắc chắn. –
Tôi đã bình chọn câu trả lời của bạn nhưng tôi vẫn gặp khó khăn khi hiểu điều này. Nhưng tại sao không có xung đột hợp nhất khi tôi sáp nhập? Tôi đã chỉnh sửa các tập tin từ cuối trong tất cả các cam kết trong chi nhánh 'khác' vì vậy cần phải có được một hợp nhất đó cũng? – Curious