2011-10-21 30 views
16

Tôi đã thực hiện một loạt các cam kết sau một cam kết tốt trên nhánh chính, điều mà tôi phải làm ở một nhánh khác. Tôi có thể di chuyển các cam kết đó, bắt đầu bằng một cam kết cụ thể, đến một chi nhánh khác, và giữ cam kết tốt như cam kết cuối cùng về chủ?Git: di chuyển các cam kết từ chủ này đến chi nhánh khác

+0

Có thể trùng lặp của [Di chuyển (các) cam kết gần đây nhất đến một nhánh mới với Git] (http://stackoverflow.com/questions/1628563/move-the-most-recent-commits-to-a -new-branch-with-git) –

Trả lời

25

chắc:

$ git branch new-branch-name      # Create a new branch from the current commit 
$ git reset --hard <last good commit on master> # Reset master to the good commit 
+0

Điều đó thật dễ dàng. Cảm ơn! –

+0

Vì vậy, nếu tôi muốn loại bỏ hai lần commit cuối cùng từ master đến branch khác. Tôi kiểm tra cam kết cuối cùng của chủ, làm cho một chi nhánh từ đó và sau đó thiết lập lại chủ HEAD ~ 2? Điều này cũng sẽ không xóa các cam kết khỏi chi nhánh? Điều này có nghĩa rằng các cam kết không bị xóa chỉ là con trỏ của chủ bây giờ chỉ hai cam kết trước đó? Đó là thiết lập lại chỉ di chuyển con trỏ chi nhánh một số cam kết trước đó? – croraf

+0

@croraf: Chi nhánh sẽ vẫn trỏ đến hai lần commit trước đó trên master. – mipadi

1

Vâng, bạn có thể, và đó sẽ là 2 hoạt động riêng biệt:

Sao chép các cam kết từ một chi nhánh đến chi nhánh bạn muốn họ được:

git cherry-pick <hash_of_commit> --onto <target_branch> 

Sau đó, sửa chi nhánh chính hoàn nguyên về cam kết tốt:

git checkout master 
git reset --hard <hash_of_good_commit> 
Các vấn đề liên quan