2013-06-16 40 views
12

Từ Pro Git:Không thể tạo một chi nhánh địa phương và từ xa (theo dõi) cùng lúc

bạn có thể thiết lập các chi nhánh theo dõi khác nếu bạn muốn - những người mà không chi nhánh theo dõi trên nguồn gốc và don không theo dõi nhánh chính. Các trường hợp đơn giản là ví dụ bạn vừa thấy, chạy git checkout -b [chi nhánh] [ở xa]/[chi nhánh]

$ git checkout --track nguồn gốc/serverfix Chi nhánh serverfix thiết lập để theo dõi refs chi nhánh từ xa/remotes/origin/serverfix. Đã chuyển sang chi nhánh mới "serverfix"

$ git checkout -b sf origin/serverfix Chi nhánh sf thiết lập để theo dõi từ xa chi nhánh refs/remotes/origin/serverfix. Đã chuyển sang chi nhánh mới "sf"

Hiểu biết của tôi là đây là cách tạo chi nhánh địa phương và chi nhánh thượng nguồn.

Nhưng khi tôi làm:

git checkout -b iss53 origin/iss53 tôi nhận được:
fatal: Cannot update paths and switch to branch 'iss53' at the same time.

Và khi tôi làm:
git checkout --track origin/iss53 tôi nhận được:

chết người: Không thể cập nhật đường dẫn và chuyển sang chi nhánh 'iss53' tại cùng thời điểm . Bạn có dự định thanh toán 'origin/iss53' không thể được giải quyết dưới dạng cam kết không?

Tại sao?

Trả lời

7
Cannot update paths and switch to branch 

Như tôi đã đề cập đến trong "Get new upstream branch with git", bạn có thể thử:

# let's create a new local branch first 
git checkout -b iss53 
# then reset its starting point 
git reset --hard origin/iss53 

Hãy chắc chắn rằng remote tracking branchorigin/iss53 không tồn tại đầu tiên (sau một git fetch origin)

origin/iss53 có nghĩa là có một iss53 trên upstream repo từ xa được tham chiếu bởi origin.

Nếu không có một chi nhánh như vậy, sau đó bạn chỉ tạo ra một chi nhánh địa phương iss53, và đẩy nó như vậy:

git push -u origin iss53 

Điều đó sẽ thiết lập một mối liên hệ giữa các chi nhánh địa phương iss53 và chi nhánh theo dõi từ xa origin/iss53 (theo dõi chi nhánh mới được tạo ra iss53 trên origin, được tạo bằng cách đẩy).

Xem "Why do I need to explicitly push a new branch?" để biết thêm về lần đẩy đầu tiên đó.

+0

Nhưng làm thế nào để tôi tạo 'nguồn gốc/iss53' ở nơi đầu tiên? – Jim

+0

@Jim Tôi đã chỉnh sửa câu trả lời để giải quyết câu hỏi của bạn. – VonC

+0

Các gợi ý để có được từ "thượng lưu" hơn là "nguồn gốc" trong câu trả lời được tham chiếu (http://stackoverflow.com/questions/15730551/get-new-upstream-branch-with-git/15731197#15731197) là những gì tôi đã mất tích. –

4

Dường như bạn chưa tìm nạp cam kết đó.Vì vậy, trước hết cần làm:

git fetch origin 

Và sau đó:

git checkout --track origin/iss53 
Các vấn đề liên quan