git rebase bằng sourcetree


83

Tôi nghĩ rằng tôi đang bối rối về cách sử dụng GUI SourceTree để thực hiện git rebase. Tôi có hai nhánh "master" và "dev". Như đã thấy, hai nhánh phân kỳ. Tôi muốn thực hiện một rebase trên nhánh "dev", sử dụng dòng lệnh, điều này sẽ là:

git checkout dev
git rebase master

nhập mô tả hình ảnh ở đây

Tôi dự kiến ​​sẽ nhấp chuột phải vào "dev" và chọn "Rebase các thay đổi hiện tại lên dev". Tôi cho rằng những thay đổi hiện tại có nghĩa là "cam kết mới trên chính". Nhưng việc chọn tùy chọn này dường như không có tác dụng gì. Các bước chính xác sẽ là gì?

Câu trả lời:


117

Nhưng việc chọn tùy chọn này dường như không có tác dụng gì.

Có, bởi vì những thay đổi hiện tại là một trong những nhánh hiện tại dev.

Rebasing devtrên đầu trang devcó nghĩa là không có.

git checkout dev
git rebase master

Điều đó có nghĩa là: nhánh hiện tại là dev: được giảm giá trên đầu trang master.

Vì vậy, trong SourceTree, bạn cần phải nhấp chuột phải vào master(trong khi devđược kiểm tra) và chọn:

Rebase current changes onto master

Howe cho biết thêm trong các bình luận :

Tên hiện tại của " rebase current changes onto [branch]" gây hiểu lầm. Kiểm tra thảo luận cải tiếnSRCTREE-1578 này .

Sau khi nhận ra rằng bản thân gặp khó khăn khi cố gắng cập nhật một nhánh tính năng và không phát triển được, tôi nhận ra rằng mục menu ngữ cảnh bên trái có nhãn “ rebase current changes onto $somebranch” thực sự làm ngược lại với những gì tên của nó gợi ý:
nó phục hồi nhánh hiện tại đến trạng thái $ somebranch;
Nói cách khác, nó phục hồi $somebranchvào (hoặc vào) nhánh hiện tại, chứ không phải ngược lại. (Đúng?)

Giới từ “ onto” trong văn bản hiện tại bị hiểu sai; nó ngụ ý rằng đối tượng của câu ( $somebranchtrong ví dụ của tôi) sẽ nhận được những thay đổi.
Trong thực tế, nó là ngược lại sẽ xảy ra.
Sự vắng mặt của tên chi nhánh hiện tại làm tăng thêm sự nhầm lẫn.

Một cách diễn đạt lại để cải thiện cấu trúc câu và bao gồm tên của nhánh bị ảnh hưởng sẽ mang lại một chiến thắng lớn cho sự rõ ràng.
Ví dụ:

rebase $currentbranch to head of $somebranch
rebase $somebranch onto $currentbranch

13
Đối với ngữ cảnh, phản đối là từ deadman đã đăng câu trả lời trước đó mà không đề cập đến SourceTree. Tôi đã phản đối và giải thích những lời chỉ trích của mình trong một bình luận. Rõ ràng, deadman không đánh giá cao những nhận xét mang tính xây dựng mà tôi đưa ra.
VonC

1
Điều đó sẽ thay đổi chi nhánh chủ? Tôi chỉ muốn cập nhật nhánh nhà phát triển của mình với những thay đổi mới nhất của nhánh chính - và sau đó hợp nhất nhánh nhà phát triển của tôi thành nhánh chính. Cách được mô tả sẽ thực hiện nhiệm vụ này?
Gerfried

2
@Gerfried Đồng ý. Miễn là nhà phát triển không được thúc đẩy, bạn có thể căn cứ lại trên bậc thầy.
VonC

14
Sourcetree nên thay đổi từ ngữ thành "Rebase những thay đổi mới nhất từ ​​Master thành Dev" để làm rõ hơn.
Timo

3
Đặt tên hiện tại của "rebase current changes on [branch]" là sai lầm. Xem thảo luận về cải tiến này: jira.atlassian.com/browse/SRCTREE-1578 .
Zihao Zhao
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.