vì nó tìm thấy dưới một
Nope: vì nó tìm thấy hơn hơn một phù hợp với chi nhánh ở xa, có nghĩa là chức năng remote_find_tracking()
trả chi nhánh nhiều hơn một theo dõi cho một ref chi nhánh địa phương nhất định.
Là some_remote_branch
không đã được theo dõi bởi một trong các chi nhánh địa phương của bạn?
(một git config -l
sẽ cho phép bạn kiểm tra những gì bạn hiện đã thiết lập).
(một git branch -r
cũng có thể giúp để liệt kê các chi nhánh từ xa theo dõi hiện tại của bạn.)
chi nhánh từ xa, mà tôi nghĩ là một cái gì đó khác nhau mà chi nhánh từ xa theo dõi.
sai, như minh họa bởi this thread:
xa-chi nhánh là "thật" từ xa theo dõi các chi nhánh. Bạn không cam kết với chúng cục bộ, chúng chủ yếu là các bản sao chỉ đọc chính xác những gì đang xảy ra trong một kho lưu trữ từ xa.
Nếu bạn cố gắng 'git-checkout' một nhánh theo dõi từ xa, bạn sẽ nhận được HEAD tách rời.
Chi nhánh địa phương:
Chi nhánh mà bạn có thể thực hiện thay đổi. Tùy chọn, chi nhánh có thể được cấu hình để "theo dõi" một trong các nhánh theo dõi từ xa của bạn. Điều này có nghĩa là 'git-pull
' không có đối số (khi chi nhánh địa phương của bạn được chọn), sẽ tự động 'git-fetch
' và sau đó 'git-merge
' chi nhánh theo dõi từ xa.
Bây giờ là:
nó là công việc của git-fetch
để cập nhật chi nhánh từ xa theo dõi với bất kỳ thay đổi được tìm thấy trong kho lưu trữ từ xa.
Git-pull
chạy git-fetch
và sau đó chạy git-merge
để cập nhật chi nhánh hiện đã được kiểm tra.
Vấn đề là, cho git-hợp nhất:
Khi điều này xảy ra, git-merge
phải quyết định mà remote-tracking-branch
sáp nhập vào hiện kiểm tra ra chi nhánh địa phương.
Bạn có thể đặt remote-tracking-branch
sẽ được chọn trong trường hợp này bằng tùy chọn --track.
--track
bộ lập một chi nhánh sau tại địa phương để đề cập đến chi nhánh một điều khiển từ xa, không đến chi nhánh theo dõi
Consider thatremote_find_tracking()
mất một đơn từ xa và một refspec với src điền, và trả về refspec trao sau điền dst của nó, nếu một theo dõi thích hợp được cấu hình cho điều khiển từ xa, có nghĩa là git.
/*
* For the given remote, reads the refspec's src and sets the other fields.
*/
int remote_find_tracking(struct remote *remote, struct refspec *refspec);
Có thể nó xem xét nó đã có một chi nhánh địa phương theo sau some_remote_branch
. Bạn có bất kỳ chi nhánh địa phương nào có cùng tên chính xác không?
Hoặc, cách khác xung quanh: nhánh hiện tại của bạn có một nhánh từ xa có tên tương tự, làm cho nó trở thành một ứng cử viên tự nhiên cho bất kỳ git-merge
: cố gắng làm cho nó theo dõi một chi nhánh khác từ xa sẽ làm cho git-merge
không thể chọn địa phương nào để cập nhật/hợp nhất với các thay đổi của điều khiển từ xa.
Chỉ cần thêm một số thuật ngữ và một số đề xuất (chỉ dẫn đến khám phá, không có gì dứt khoát) để giải thích tình hình hiện tại. – VonC
Cảm ơn bạn đã phản hồi, nhưng bạn có thực sự tìm thấy lý do đằng sau thông báo lỗi của mình không? – VonC