2011-08-25 10 views
14

Tôi đã cố gắng để hiểu How to undo a commit and commit the changes into the other branch in Git? nhưng tôi không nghĩ rằng nó phải là khó khăn. (Câu trả lời đang sử dụng branch -fstash và tôi không nghĩ mình cần những thứ đó.)Sao chép 1 cam kết từ một chi nhánh (dev) sang một nhánh khác (ổn định) với thư mục làm việc sạch

Tôi đang làm việc trong chi nhánh nhà phát triển của mình. Đã có hai cam kết khác nhau trong dir làm việc bẩn. Cam kết tất cả các thay đổi trong hai cam kết khác nhau. Cam kết cuối cùng là WIP (vì vậy tài liệu dev). Thứ hai đến cuối cùng được thực hiện và phải được sao chép vào chi nhánh stable.

Tôi tưởng tượng cái gì đó như

$ git copy e87568fa stable 

nhưng tôi khá chắc chắn đó không phải là nó.

Có lựa chọn anh đào có liên quan gì đến nó?

Để chắc chắn: Tôi muốn cam kết lưu lại trên dev. Vì vậy, không phải mv nó, nhưng cp nó.

Tôi vẫn bị bối rối bởi tất cả các tùy chọn và lệnh GIT này.

Trả lời

21

Đến nhánh ổn định:

git checkout stable 

Sao chép mong muốn cam kết các chi nhánh hiện hành.

git cherry-pick e87568fa 

Bây giờ bạn có thể trở lại dev:

git checkout dev 
+0

Tôi không có một dir làm việc dơ bẩn. Nếu không có 'stash' tôi chỉ làm chính xác điều đó (http://stackoverflow.com/questions/1334027/git-working-on-multiple-branches/1340143#1340143). Hoàn hảo! Cảm ơn. Tôi thậm chí có thể nhớ cái này =) và chắc chắn sử dụng nó một lần nữa. – Rudie

+0

Tôi đã thực hiện các bước trên, cộng với một dòng khác: 'git cherry-pick {cam-ID}' để di chuyển '{commit-ID}' sang nhánh dev – AceMark