2012-04-13 49 views
126

Tôi đã nhân bản một kho git và sau đó kiểm tra ra thẻ:git thẻ thanh toán, git pull thất bại trong ngành

# git checkout 2.4.33 -b my_branch 

Đây là OK, nhưng khi tôi cố gắng chạy git pull trong ngành của tôi, git spits ra lỗi này:

There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details

git pull <remote> <branch> 

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream new origin/<branch> 

Tôi muốn git pull chỉ muốn cập nhật chi nhánh chính và để riêng nhánh hiện tại của tôi (đó là thẻ). Có phải bất cư thứ gì như thế này đều được?

Lý do tôi cần điều này là tôi có một kịch bản tự động mà luôn luôn git kéo kho và dĩ nhiên là thất bại vì lỗi trên ..

+0

Bản sao có thể có của [git pull: Không có thông tin theo dõi cho nhánh hiện tại] (http://stackoverflow.com/questions/32056324/git-pull-there-is-no- tracking-information-for-the-current-branch) – daisy

Trả lời

103

Edit: Đối với các phiên bản mới hơn của Git, --set-upstream master đã bị phản đối, bạn nên sử dụng --set-upstream-to thay :

git branch --set-upstream-to=origin/master master 

Vì nó nhắc, bạn chỉ có thể chạy:

git branch --set-upstream master origin/master 

Sau đó, bạn chỉ có thể chạy git pull để cập nhật mã của bạn.

+4

Điều này giải quyết được vấn đề. Nhưng tôi vẫn phải hiểu làm thế nào mà nhánh chủ của tôi bị mất tham chiếu đến nguồn gốc. Tôi đã ở trên một chi nhánh và đã làm 'git checkout master'. Tôi không thể làm 'git pull' vì tài liệu tham khảo xuất xứ đã bị mất. Bây giờ nó hoạt động. Cảm ơn bạn! – Ariel

6

Chuyển trở lại chi nhánh tổng thể sử dụng

$ git checkout master 

và sau đó chạy git pull hoạt động

$ git pull origin/master 

sau đó, bạn có thể chuyển về my_branch bạn một lần nữa.

+6

Đó chính xác là những gì tôi đang cố gắng tránh. Tôi muốn biết nếu có một cách "chính thức" để làm điều đó. – alesko

0

Để chỉ cần tải bản cập nhật:

git fetch origin master 

Tuy nhiên, điều này chỉ cập nhật một tham chiếu gọi origin/master. Cách tốt nhất để cập nhật địa phương của bạn master sẽ là thanh toán/hợp nhất được đề cập trong một nhận xét khác. Nếu bạn có thể đảm bảo rằng địa phương của bạn master chưa tách ra từ thân cây chính mà origin/master được bật, bạn thể sử dụng git update-ref để lập bản đồ hiện master đến điểm mới, nhưng đó là của bạn có thể không phải là giải pháp tốt nhất để được sử dụng trên một thường xuyên ...

90

tôi đã cùng một vấn đề và cố định nó bằng lệnh này:

$ git push -u origin master 

Từ tập tin trợ giúp các -u cơ bản thiết lập mặc định cho Pulls:

-u, --set-upstream` 

    For every branch that is up to date or successfully pushed, add 
    upstream (tracking) reference, used by argument-less git-pull(1) and 
    other commands. For more information, see branch.<name>.merge in 
    git-config(1). 
5

@alesko: không thể chỉ thực hiện git pull sau khi thanh toán my_branch để cập nhật chỉ master chi nhánh.
git pull cũng sẽ hợp nhất với hiện chi nhánh -> trong kịch bản của mình vào my_branch

@Simon: đó sẽ làm cũng đẩy. tại sao vậy?

$ git branch -u origin/master 
Branch master set up to track remote branch master from origin. 

và theo công docs:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
47

Hãy thử những lệnh:

git pull origin master 
git push -u origin master 
4

Trước tiên, hãy đảm bảo bạn đang ở đúng nhánh.
Sau đó (một lần duy nhất):

git branch --track 

Sau đó các công trình này một lần nữa:

git pull 
1

Bạn cần phải thiết lập theo dõi của bạn (thượng nguồn) cho các chi nhánh hiện tại

git branch --set-upstream master origin/master 

Đã không được dùng nữa thay vì bạn có thể sử dụng --track flag

git branch --track master origin/master 

Tôi cũng như các tài liệu tham khảo doc rằng thông báo @ Casey:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
1

gì làm việc cho tôi là: git branch --set-thượng nguồn-to = nguồn gốc chủ Khi tôi đã một lần nữa kéo tôi chỉ nhận được cập nhật từ chủ và cảnh báo đã biến mất.

4

Bạn có thể có nhiều chi nhánh. Và nhánh hiện tại của bạn không thiết lập ngược dòng ở xa.

bước để sửa lỗi này:

git checkout branch_name 
git branch --set-upstream-to=origin/remote_branch_name local_branch_name 

ví dụ

// this set upstream of local branch develop to remote branch origin/develop, 
git branch --set-upstream-to=origin/develop develop 

Sau khi thực hiện điều này, khi bạn làm git pull, nó kéo từ nhánh được chỉ định.

2

Hãy thử điều này

git checkout master 

git pull origin master 
+2

Điều này không thực sự trả lời câu hỏi. Ngoài ra mặc dù không có câu trả lời được chấp nhận, một bình chọn hàng đầu phù hợp hơn nhiều so với câu trả lời cho câu hỏi cũ này – fejese

0

Lệnh này bị phản đối: git branch --set-upstream master origin/master

Vì vậy, khi cố gắng để thiết lập theo dõi, đây là lệnh mà làm việc cho tôi:

git branch --set-upstream-to=origin/master master 
1

Nếu như tôi bạn cần phải làm điều này tất cả các thời gian, bạn có thể thiết lập một bí danh để làm điều đó tự động bằng cách thêm sau đây để .gitconfig của bạn tập tin:

[alias] 
    set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD` 

Khi bạn thấy thông báo There is no tracking information..., chỉ cần chạy git set-upstream, sau đó git push một lần nữa.

Nhờ https://zarino.co.uk/post/git-set-upstream/

1

Bạn có thể xác định những chi nhánh bạn muốn kéo:

git pull origin master 

Hoặc bạn có thể thiết lập nó để địa phương chi nhánh tổng thể bài hát github chủ chi nhánh của bạn như một thượng nguồn:

git branch --set-upstream-to=origin/master master 
git pull 

Theo dõi chi nhánh này được thiết lập cho bạn tự động khi bạn sao chép kho lưu trữ (chỉ dành cho chi nhánh mặc định), nhưng nếu bạn thêm từ xa vào kho lưu trữ hiện tại, bạn phải tự thiết lập theo dõi. Rất may, những lời khuyên được đưa ra bởi git làm cho khá dễ dàng để nhớ làm thế nào để làm.

--set-upstream không được dùng nữa trong git 1.9.x. Tiếp tục, bạn muốn sử dụng một cái gì đó như

git branch -u origin/master 

giả sử bạn đã kiểm tra tổng thể rồi. Nếu không, git branch -u origin/master master sẽ hoạt động