Trong Git tôi có thể làm điều này:
1. Bắt đầu làm việc trên tính năng mới: $ git co -b newfeature-123 # (một nhánh phát triển tính năng cục bộ) thực hiện một vài cam kết (M, N, O) thầy A --- B --- C \ newfeature-123 M --- N --- O 2. Kéo các thay đổi mới từ tổng thể ngược dòng: $ git kéo (bản cập nhật chính với ff-commits) thầy A --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O 3. Rebase off master để tính năng mới của tôi có thể được phát triển dựa trên những thay đổi ngược dòng mới nhất: (từ newfeature-123) $ git rebase master thầy A --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O
Tôi muốn biết làm thế nào để làm điều tương tự trong Mercurial và tôi đã lướt web để tìm câu trả lời, nhưng điều tốt nhất tôi có thể tìm thấy là: git rebase - có thể làm điều đó
Liên kết đó cung cấp 2 ví dụ:
1. Tôi sẽ thừa nhận rằng: (thay thế các sửa đổi từ ví dụ này bằng các ví dụ từ ví dụ của riêng tôi)
hg lên -CF chi nhánh hg -f newfeature-123 hg ghép -a -b newfeature-123
không quá tệ, ngoại trừ việc nó bỏ lại phía sau MNO trước khi khởi động lại như một cái đầu không được trộn lẫn và tạo ra 3 cam kết mới M ', N', O 'đại diện cho chúng phân nhánh khỏi tuyến chính được cập nhật.
Về cơ bản vấn đề là tôi kết thúc với điều này:
thầy A --- B --- C --- D --- E --- F \ \ newfeature-123 \ M '--- N' --- O ' \ newfeature-123 M --- N --- O
Điều này là không tốt vì nó để lại phía sau địa phương, các cam kết không mong muốn nên được bỏ.
- Tùy chọn khác từ cùng một liên kết là
hg qimport -r M: O hg qpop -a hg lên F chi nhánh hg newfeature-123 hg qpush -a hg qdel -r qbase: qtip
và điều này không dẫn đến biểu đồ mong muốn:
thầy A --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O
nhưng các lệnh này (tất cả 6 trong số chúng!) có vẻ phức tạp hơn nhiều so với
$ git rebase master
Tôi muốn biết nếu đây là tương đương duy nhất trong Hg hoặc nếu có một số cách khác có sẵn đơn giản như Git.
git reflog
và chúng không hoàn toàn biến mất cho đến khi chúng được thu gom rác. Nếu bạn muốn giữ chúng xung quanh trong một nhánh có tên để bạn không phải sử dụng reflog, chỉ cần làmgit branch feature-123_original
trước khi nổi loạn.