2012-09-18 43 views
11

(Điều này có vẻ như nó phải là rất dễ dàng để làm, nhưng tôi đang mọc lên trống trên các tìm kiếm cho đến nay.)Git - rebasing để một thẻ đặc biệt

Tôi có một cơ thể của mã từ một thượng nguồn nguồn, với các phiên bản khác nhau được gắn thẻ trong các nhánh khác nhau.

Tôi đang làm việc trên nhánh "phát triển" của mình dựa trên thẻ "v1.0". nhiều phiên bản đã xuất hiện kể từ đó, nhưng trong khi "v2.0" là thú vị, tôi muốn rebase chi nhánh phát triển của tôi thành "v1.5" và tiếp tục làm việc ở đó (giả sử tôi không có kế hoạch nuôi ngược dòng đó). Có lẽ sau này tôi sẽ rebase nó một lần nữa để "v2.0".

(Đối với mục đích này giả định "phiên bản 1.x" s là tất cả các thẻ trên cùng một nhánh. Đối với tín dụng thêm chúng ta có thể giả định "v2.0" là một từ khóa trên một chi nhánh khác.)

tôi đã có thể tạo chi nhánh "phát triển" ban đầu dựa trên thẻ "v1.0" một cách dễ dàng, nhưng việc rebase xuất hiện chỉ hoạt động với các nhánh. Không thể rebase bằng cách sử dụng thẻ là tốt? Nếu không, cách thích hợp để thực hiện điều đó (để có chính xác hiệu ứng tương tự như rebasing cho một thẻ cụ thể) là gì?

+0

Bạn có thể rebase _to_ một thẻ. Nếu bạn không thể làm điều đó, vui lòng bao gồm lệnh bạn đã sử dụng. –

+0

Hmm! Tôi đã làm điều này với TortoiseGit (mà phẳng ra không cung cấp tùy chọn rebasing với thẻ - hay không?) Và sau đó tôi đã thử nó trong git bash và nó đã không có hiệu lực ... nhưng tôi dường như đã có một lỗi cú pháp (Tôi đã thử "git rebase phát triển v1.5" đó là không chính xác ... Tôi chỉ sử dụng "git rebase v1.5" với phát triển kiểm tra ra và nó dường như đã làm việc). Edit: Trên thực tế, tôi đã làm điều đó vì một lý do, đó là một ví dụ không hoàn toàn tốt tôi tìm thấy ở nơi khác. – MartyMacGyver

+0

Tôi nghĩ rằng thanh toán và rebase là cách tiêu chuẩn để làm điều này. –

Trả lời

13

Bạn sẽ sử dụng lệnh sau:

git rebase --onto v1.5 v1.0 develop 

Các develop phần của lệnh phải là một chi nhánh, nhưng hai người kia có thể bất cứ điều gì bạn muốn.

+0

Có vẻ như tôi đã làm hỏng cú pháp ban đầu, do đó dẫn đến câu hỏi của tôi. Và dường như sự vắng mặt của chức năng này trong tùy chọn rebornegit's rebase khiến tôi đặt câu hỏi nếu nó thậm chí còn có thể. Tuy nhiên, chủ đề này đã được chứng minh là có nhiều thông tin hơn tôi mong đợi. Cảm ơn! – MartyMacGyver

+0

Theo dõi: Tôi đã thử điều này qua lại và quay lại. Điều này thực sự tỏ ra ít phức tạp hơn so với thử nghiệm ban đầu của tôi nhánh-to-chi nhánh bằng cách sử dụng TortoiseGit (trong đó, vì thẻ tổ tiên không thể được chỉ định, đã ném không cần kết hợp "xung đột" mà có thể đã được tự động giải quyết với các thông tin được thêm vào giống như Nó vẫn là phần mềm tiện dụng, nhưng có vẻ như nó không xử lý các bản rebases một cách triệt để nhất có thể. – MartyMacGyver

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