Tôi vô tình thực hiện 10 cam kết trên nhánh "kiểm tra" khi tôi định cam kết chúng trên nhánh "master". Các cam kết khác trên nhánh "testing" là rác, vì vậy tôi không muốn hợp nhất nó với "master". Thay vào đó, tôi chỉ muốn phát lại 10 commit mới nhất trên master.Phát lại Nit cam kết cuối cùng trên một chi nhánh khác
Trả lời
- git checkout chủ
- git whatchanged thử nghiệm
- git cherry-pick _________
?
Việc rebase nên thực hiện.
git rebase -p --onto master testing~10 testing
Điều này sẽ sao chép mười lần thử nghiệm cuối cùng để kiểm tra và làm cho thử nghiệm mới (thử nghiệm cũ sẽ là trẻ mồ côi). Sau đó, bạn có thể hợp nhất tổng thể để thử nghiệm dưới dạng tua đi nhanh.
git checkout master
git merge testing
Đã sử dụng câu trả lời của Ron trước khi đăng. –
Có thể đáng chú ý rằng điều này lá kiểm tra tại cùng một điểm như chủ, để lại các 'rác' cam kết mồ côi. Điều này có thể hoặc có thể không phải là một điều tốt. Một khả năng khác sẽ là git checkout master; git reset --hard testing; git rebase --onto HEAD @ {1} HEAD ~ 10 –
@CharlesBailey Bạn đang định nhấn git flog gì? – Fredrick
Như đã nói trong ý kiến, câu trả lời -inspired rebase
là bỏ rơi 'rác' cam mồ côi.
Chỉ cần sử dụng các công cụ đơn giản:
git checkout master
git merge testing
git checkout testing
git reset --hard HEAD~10 # Go back 10 commits (*1)
git checkout master
(* 1) Bạn chỉ có "mất" cam kết từ các chi nhánh testing
, vì bạn sẽ có những cam kết trong master
nhờ vào merge
.
- 1. Di chuyển các cam kết từ một chi nhánh này sang một chi nhánh khác
- 2. Từ chủ, cam kết đến một chi nhánh khác
- 3. Cấp chi nhánh SVN cam kết quyền
- 4. Cam kết thay đổi đối với một chi nhánh khác với chi nhánh hiện tại đã kiểm tra với subversion
- 5. Số cam kết trên chi nhánh trong git
- 6. Tạo chi nhánh git dựa trên một chi nhánh khác
- 7. hg: Cam kết một số thay đổi đối với một chi nhánh khác
- 8. Kéo tất cả các cam kết từ một chi nhánh, đẩy cam kết nào đó sang
- 9. git: Cam kết công việc hiện tại chưa được cam kết trong nhánh hiện tại đến chi nhánh mới
- 10. Xóa tất cả các cam kết trong một chi nhánh sau khi cam kết nhất định
- 11. Làm cách nào để áp dụng lại các cam kết ở trên cùng của chi nhánh không liên quan?
- 12. Git: di chuyển các cam kết từ chủ này đến chi nhánh khác
- 13. Có thể quay trở lại một bộ cam kết thành chi nhánh không?
- 14. Git cam kết submodule chung (chi nhánh chính)
- 15. Làm thế nào để thiết lập lại một chi nhánh đến một chi nhánh khác với git?
- 16. Tìm cam kết đầu tiên cụ thể cho chi nhánh
- 17. Cam kết thay đổi cho nhiều chi nhánh trong Git
- 18. Chỉ kết hợp một changeset từ một chi nhánh khác
- 19. Tạo cam kết ghi đè lên nội dung chi nhánh hiện tại với một số khác
- 20. magit: làm thế nào để diff cùng một tập tin giữa hai cam kết khác nhau trên cùng một chi nhánh?
- 21. Tại sao tôi có cùng cam kết trong hai nhánh với các băm khác nhau
- 22. Làm thế nào để di chuyển tất cả các cam kết từ một chi nhánh khác?
- 23. Nhận tin nhắn cuối cùng hoặc sự khác biệt của CVS cuối cùng cam kết
- 24. cách cam kết thay đổi chi nhánh mới
- 25. Git tìm hiểu cam kết cuối cùng tôi đã đẩy
- 26. Hg gần như đã cam kết sai chi nhánh
- 27. git dàn dựng và cam kết giữa nhiều chi nhánh
- 28. Hiển thị các chi nhánh không chứa cam kết
- 29. Squash cam kết trên tổng thể nhưng tách biệt các cam kết trên chi nhánh tính năng?
- 30. Chi nhánh bí danh cho bản phát hành cuối cùng trong Git
Chỉ cần một fyi - cherry-pick sẽ chỉ thực hiện một cam kết tại một thời điểm, vì vậy bạn sẽ phải thử nghiệm cherry-picket ~ 9 sau đó thử nghiệm ~ 8 rồi ... thử nghiệm. Đó là lý do tại sao tôi thích cách tiếp cận rebase mà Talljoe gợi ý ... tất nhiên kết quả là như nhau. Trong thực tế, nếu bạn thực hiện rebase tương tác, git sẽ thực sự sử dụng lựa chọn cherry dưới mui xe. –
@PatNotz 'git cherry-pick' hiện có thể thực hiện nhiều lần commit (ví dụ:' git cherry-pick testing ~ 10..testing'). –
Bạn không bao giờ nên sử dụng 'cherry-pick'. Đọc [bài viết này] (http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html) để biết thêm thông tin. – Tim