2011-11-22 29 views
218

Tôi đã tạo chi nhánh mới có tên newbranch từ chi nhánh master trong git. Bây giờ tôi đã thực hiện một số công việc và muốn hợp nhất newbranch thành master; tuy nhiên, tôi đã thực hiện thêm một số thay đổi đối với newbranch và tôi muốn hợp nhất newbranch lên đến cam kết thứ tư từ lần cuối đến master.Hợp nhất một cam kết cụ thể

tôi đã sử dụng cherry-pick nhưng nó cho thấy thông điệp sử dụng các tùy chọn bên phải:

git checkout master  
git cherry-pick ^^^^HEAD newbranch 

Tôi có thể sử dụng git merge để làm điều đó để thay thế?

git merge newbranch <commitid> 

Trả lời

378

Chắc chắn, đang ở master chi nhánh tất cả các bạn cần làm là:

git merge <commit-id> 

nơi commit-id là hash của cam kết cuối cùng từ newbranch mà bạn muốn để có được trong ngành master của bạn.

Bạn có thể tìm hiểu thêm về bất kỳ lệnh git nào bằng cách thực hiện git help <command>. Trong trường hợp đó là git help merge. Và tài liệu đang nói rằng đối số cuối cùng cho lệnh merge<commit>..., vì vậy bạn có thể chuyển tham chiếu đến bất kỳ cam kết nào hoặc thậm chí nhiều lần commit. Mặc dù, tôi chưa bao giờ tự làm.

+12

không chỉ một cam kết đơn lẻ mà tất cả các cam kết trước 'commit-id' – Dau

+31

Có, nó sẽ hợp nhất tất cả các cam kết từ' newbranch' kể từ khi lịch sử được phân tách từ 'master' thành' commit-id' thành chi nhánh 'master'. Bạn có thể nghĩ về 'git merge ' khi hợp nhất một số chi nhánh chưa đặt tên kết thúc bằng 'commit-id' vào nhánh hiện tại của bạn. –

+0

Tôi có thể hợp nhất giữa hai nhánh nội bộ không phải là master, sử dụng id cam kết không? – skt

2

Để giữ sạch nhánh, bạn có thể làm điều này:

git checkout newbranch 
git branch newbranch2 
git reset --hard <commit Id> # the commit at which you want to merge 
git checkout master 
git merge newbranch 
git checkout newbranch2 

Bằng cách này, newbranch sẽ kết thúc nơi nó được sáp nhập vào tổng thể, và bạn tiếp tục làm việc trên newbranch2.

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