Git: nhận các thay đổi từ một nhánh khác


80

Tôi có một dự án sử dụng git và tôi muốn bắt đầu một nhánh mới để thêm một tính năng mới chính.

Dưới mainchi nhánh, tôi sẽ tiếp tục bổ sung các bản sửa lỗi và các tính năng nhỏ. Định kỳ, tôi muốn chuyển các thay đổi từ nhánh chính vào nhánh "tính năng mới chính" của mình. Cách tốt nhất để làm điều này là gì?

Cuối cùng, tôi sẽ hợp nhất nhánh "tính năng mới chính" vào nhánh chính.

Câu trả lời:


57

git checkout featurebranch && git merge master

Bạn có thể làm điều này bao nhiêu lần tùy thích; nó sẽ không ảnh hưởng đến master và bạn sẽ có thể dễ dàng làm điều đó theo cách khác bất cứ khi nào bạn phát hiện ra rằng bạn đã hoàn thành với nhánh tính năng.


29
git rebase mastercó thể mong muốn hơn là git merge masterđơn giản hóa việc tích hợp trở lại sau này vào nhánh chính.
Amber

114
git checkout featurebranch && git rebase master

Miễn là bạn chưa đẩy, tốt hơn là bạn nên phát lại các thay đổi của mình trên đầu trang chủ.

Xem:


1
Bạn có thể nhận các thay đổi gần đây hơn với git rebase hay chỉ với git merge?
keflavich

@keflavich vì bạn đang phục hồi featurebranchtrên bậc thầy, bạn đang nhận được tất cả các cam kết mới nhất từ ​​đó master. Việc hợp nhất sẽ tương tự nhưng sẽ tạo ra sự tích hợp phức tạp hơn một chút với mastersau này.
VonC

2
Chào! Tôi là một người mới git, vì vậy bạn có thể đi chi tiết hơn về việc as long as you haven't pushed yet?tôi có một nhánh tính năng mà tôi đã đẩy vào kho lưu trữ từ xa để sao lưu. git rebase masterSau đó, tôi có thể tiếp tục làm , sau đó cam kết và đẩy một số công việc sang nhánh tính năng của mình git rebase masterkhông? Tôi cũng phải hợp nhất các nhánh tính năng khác vào nhánh của mình!
Brad Parks

@GringoSuave Có, nếu bạn không phải là người duy nhất làm việc trên nhánh tính năng đó. Nói chung, chỉ rebase những gì bạn chưa đẩy (trừ khi, một lần nữa, bạn là người duy nhất làm việc trên đó)
VonC
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.