Tất cả bạn cần làm là nói với git để bắt đầu rebase từ nơi: Bạn có thể làm điều này
git rebase --onto master SOMESHA foo
đâu SOMESHA là chủ cũ SHA. Đó là nếu cây của bạn bây giờ trông như thế này
* aaaaaa - (master)
| * bbbbbb - (foo)
| * cccccc - (old master)
|/
* ffffff
Và bạn làm
git rebase --onto master cccccc foo
cây của bạn sau đó sẽ trông như thế này.
* dddddd - (foo)
|
* aaaaaa - (master)
|
* ffffff
sang một bên: chúng ta có thể sử dụng tên gọi khác nhau cho cccccc
cam kết nếu bạn không thích sử dụng giá trị SHA.
> git reflog master
aaaaaa [email protected]{0}: reset: moving to something
cccccc [email protected]{1}: commit: change the froozle
ffffff [email protected]{2}: commit: snarf the froozle
Điều này có nghĩa chúng ta có thể tham khảo cccccc
như [email protected]{1}
(AKA, vị trí trước đó của thầy)
Vì vậy, chúng ta có thể viết những dòng này rebase như
git rebase --onto master [email protected]{1} foo
Một mô tả về các cam kết cccccc
là foo^
(AKA, cam kết parernt cho foo), vì vậy chúng tôi cũng có thể viết điều này là
git rebase --onto master foo^ foo
Tất cả đều làm chính xác điều tương tự, và bạn có thể thích sử dụng những thứ khác nhau trong các tình huống khác nhau. Tôi thường tìm thấy SHA đơn giản để sử dụng, vì tôi thường sẽ kéo lên một đồ thị của kho lưu trữ của tôi trước khi thực hiện loại hoạt động này.
Nguồn
2012-08-08 03:57:42
Cảm ơn, công trình này – Aaron
Thay vì SHA cam kết, bạn cũng có thể sử dụng 'master @ {1}'. – chbaker0
@ chbaker0 bạn hoàn toàn chính xác - Ban đầu tôi nghĩ bạn đang đề xuất điều gì đó khác biệt. Tôi đang thêm gợi ý đó vào câu trả lời với giải thích. –