2016-02-25 25 views
8

Tôi có hai nhánh mà tôi giữ trên đầu trang của thượng lưu/master. Một nhánh có tổ tiên khác để tạo thành một dòng.Cách dễ nhất để rebase nhiều chi nhánh trong một dòng duy nhất

U1 (upstream/master) 
    \ 
    A -- B (fixes) 
     \ 
      C -- D (features) 

Sau đó, thượng nguồn/master di chuyển về phía trước ...

U1 -- U2 (upstream/master) 
    \ 
    A -- B (fixes) 
     \ 
      C -- D (features) 

... và tôi muốn rebase cả các chi nhánh trên đầu trang.

U1 -- U2 (upstream/master) 
     \ 
     A' -- B' (fixes) 
       \ 
        C' -- D' (features) 

Tôi biết hai cách để làm điều đó, mỗi cách có nhược điểm.

git rebase upstream/master fixes 
git rebase fixes features 

Hai lệnh này đôi khi hoạt động và đôi khi cho tôi xung đột hợp nhất trên lệnh thứ hai.

git rebase upstream/master features 
# figure out the hash code of the new commit corresponding with B' 
git branch -f fixes <sha of B'> 

Điều này chỉ liên quan đến một lần rebase duy nhất, nhưng việc di chuyển nhánh thì tẻ nhạt và dễ bị lỗi.

Tôi đã xem xét việc rebase --preserve-merges, nhưng điều đó dường như không áp dụng được vì không có cam kết hợp nhất.

Có cách nào tốt hơn để thực hiện việc rebase không?

+3

Bạn có thể giúp tôi và sử dụng các sơ đồ như thế này: 'A - B - C'? Điều này sẽ không chỉ làm cho câu hỏi của bạn dễ dàng hơn để suy nghĩ về, nó cũng sẽ làm cho nó hữu ích hơn cho những người khác trong tương lai. –

+1

Đã chỉnh sửa. Nó rõ ràng hơn? –

+0

Rất tốt, tôi đã bỏ phiếu. –

Trả lời

2

Một cách để tránh xung đột hợp nhất là di chuyển các nhánh từ lịch sử trước khi rebase sang lịch phát lại bài đăng. Điều này được thừa nhận là khủng khiếp vì nó đòi hỏi phải tìm ra phiên bản mới của từng cam kết, nhưng có thể nhanh hơn việc hợp nhất không cần thiết.

ví dụ:

git rebase thượng nguồn các tính năng/master

U1 -- U2 (upstream/master) 
     \ 
     A' -- B' 
       \ 
        C' -- D' (features) 

git branch -f sửa (SHA cho B ') # Thay đổi nơi chi nhánh đang trỏ.

U1 -- U2 (upstream/master) 
     \ 
     A' -- B' (fixes) 
       \ 
        C' -- D' (features) 
Các vấn đề liên quan