2011-12-08 34 views
19

Tôi thường tạo ra chi nhánh mới từ phát triểnGit: tạo ra chi nhánh mới từ một chi nhánh sai

git checkout -b new-feature develop 

sau đó sau khi cam kết cuối cùng tôi kết hợp lại để phát triển

git checkout develop 
git merge new-feature 

nhưng lần này tôi đã tạo new-feature2 brach từ new-feature và bây giờ tôi không thể hợp nhất thành develop.

Có cách nào để chuyển đổi phụ huynh của new-feature2 thành develop không?

(Các tập tin tôi đã làm việc trên được phiên bản tương tự như trong develop vì thế này nên không yêu cầu sáp nhập.)

Trả lời

4

gì về việc tạo ra một bản vá, thanh toán đến chi nhánh develop và áp dụng các bản vá?

git checkout new-feature2 

git format-patch new-feature 

git checkout develop 

git am name-of-the-patch.patch 
+0

Âm thanh tốt, các lệnh sẽ là gì? – hakunin

+0

Tuyệt vời, không biết các bản vá git thật dễ dàng, cảm ơn! – hakunin

1

Bạn cũng có thể sử dụng git diffgit apply:

git diff new-feature..new-feature2 | git apply - 
+0

Cảm ơn bạn đã bao gồm giải pháp thay thế! – hakunin

26

Bạn có thể rebase tính năng của bạn qua cơ sở chính:

git checkout new-feature2 
git rebase --onto develop new-feature new-feature2 
# rebase the stuff from new-feature to new-feature2 onto develop branch 

hoặc làm điều đó 'bằng tay' bằng cách sử dụng cherry chọn

git checkout develop 
git log --oneline new-feature..new-feature2 
# for every commit call: 
git cherry-pick <commit-id> # note, newer versions of cherry-pick allow multiple commits at once 
+0

Tôi đã giải quyết vấn đề với bản vá, nhưng điều này nghe có vẻ giống như những gì tôi đang tìm kiếm. Cảm ơn bạn đã bao gồm các lệnh, điều này sẽ giúp người đọc. (PS: Lưu ý rằng nhánh mà tôi muốn rebase là 'develop'. Ví dụ nói' maser'.) – hakunin

+0

Tôi đã thay đổi ví dụ, cảm ơn vì đã chỉ ra rằng hakunin. – reto

+0

cuộc sống tiết kiệm .... (tốt, đã cứu tôi một chút thời gian !!!) –

3

Bạn đã thấy tính năng rebase tương tác chưa?

git rebase -i develop 

là một giải pháp khá đơn giản - nó sẽ hiển thị tất cả các cam kết của bạn từ nhánh đó. Chỉ cần xóa các dòng "chọn" khỏi nhánh không mong muốn.

+0

Âm thanh tuyệt vời, cảm ơn bạn đã thêm điều này! – hakunin

Các vấn đề liên quan