2011-01-07 20 views

Trả lời

2

Bạn có thể thực hiện công việc của mình và đẩy nó lên máy chủ trong nhánh tạm thời. Nhưng để làm điều đó, bạn sẽ phải thực hiện tệp với các điểm đánh dấu xung đột (git add . ; git commit). Và tôi sẽ khuyên bạn không nên làm điều đó, vì nó quá dễ dàng để bỏ lỡ một trong những nơi xung đột khi bạn trở lại hợp nhất. Bạn cũng có thể thử để squash hợp nhất của bạn trong tiến trình (git squash save), nhưng tôi không biết nếu nó có thể đẩy một tham chiếu squash trên một máy chủ.

Một giải pháp thay thế khác là cố gắng tách hợp nhất phức tạp của bạn thành các khối nhỏ hơn và đẩy từng hợp nhất trung gian.

Đối dụ, nếu bạn có lịch sử sau đây:

*---*---*---*---*---*---*---*---*---A 
    \ 
    \--*---0---1---2---3---4---5---B 

Và cố gắng kết hợp B vào A, bạn có thể thực hiện điều tương tự bằng cách đầu tiên sáp nhập 0, sau đó 1, sau đó 2, sau đó 3,. .. sau đó cuối cùng B (0, 1, 2, ... có thể không phải là cam kết liên tiếp, nhưng một số cột mốc quan trọng trong nhánh B).

Đây là chiến lược chúng tôi đang sử dụng khi thực hiện hợp nhất phức tạp. Chi nhánh đã hợp nhất có thể không ở trạng thái khả thi trong khi hợp nhất, do đó không được đẩy trực tiếp đến A, nhưng đến một chi nhánh khác (hợp nhất AB), sau đó khi hợp nhất xong, hãy đẩy mọi thứ đến A.

+0

Tôi đã nghĩ về cam kết tiến bộ; nhưng đối với trường hợp cụ thể, người ta không thể cam kết hợp nhất trong tiến trình, đó là những gì tôi đang tìm kiếm! – Marcus

+1

Tôi muốn thêm: nếu bạn sử dụng 'git re-re-re', bạn có thể nhận được các hợp nhất nhỏ hơn hoạt động, sau đó vứt chúng đi và làm việc hợp nhất lớn nhanh chóng bằng cách sử dụng lại dữ liệu. –

0

nhưng đối với trường hợp cụ thể, người ta không thể cam kết hợp nhất trong tiến trình, đó là những gì tôi đang tìm kiếm!

Nó phải có khả năng di chuyển tạm thời .git/MERGE_HEAD (được tạo khi merging), cam kết, và khôi phục .git/MERGE_HEAD.

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