Không có thông tin theo dõi cho chi nhánh hiện tại


581

Tôi đã sử dụng github từ một khoảng thời gian tương đối ngắn và tôi luôn sử dụng máy khách để thực hiện các thao tác và kéo. Tôi đã quyết định thử nó từ git bash ngày hôm qua và tôi đã tạo thành công một repo mới và các tệp đã cam kết.

Hôm nay tôi đã thay đổi kho lưu trữ từ một máy tính khác, tôi đã thực hiện các thay đổi và bây giờ tôi trở về nhà và thực hiện git pullđể cập nhật phiên bản địa phương của mình và tôi nhận được điều 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 develop origin/<branch>

người đóng góp duy nhất cho repo này là tôi và không có chi nhánh (chỉ là chủ). Tôi đang ở trên windows và tôi đã thực hiện thao tác kéo từ git bash:

nhập mô tả hình ảnh ở đây

trạng thái git:

$ git status
# On branch master
nothing to commit, working directory clean

chi nhánh git:

$ git branch
* master

Tôi đang làm gì sai?


Được rồi, thế còn a git remote -v? Điều đó nói lên điều gì?
criswell


Bạn cũng có thể gặp lỗi đó nếu bạn chưa cd vào thư mục repo nhân bản khi thực thi git pull.
Victoria Stuart

Với Git 2.24, Q4 2019, git pull --set-upstream-to=origin/master masterlà có thể. Xem câu trả lời của tôi dưới đây
VonC

Câu trả lời:


950

Bạn có thể chỉ định nhánh nào bạn muốn kéo:

git pull origin master

Hoặc bạn có thể thiết lập nó để nhánh chính cục bộ của bạn theo dõi nhánh chính của github dưới dạng ngược dòng:

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

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


3
hoàn hảo! nó đã làm việc. Vì vậy, những gì đã xảy ra là không có "nhánh mặc định" cho một "git pull" mặc định? đó là lý do tại sao có lỗi?
valerio0999

16
--set-upstream bị phản đối trong git 1.9.x, rõ ràng. Đi về phía trướ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 chủ. Nếu không, git branch -u origin/master mastersẽ làm việc.
Bart Đọc

5
@BartRead đã cập nhật nó để sử dụng --set-upstream-to=cú pháp rõ ràng mới . (là sự thay thế cho --set-upstream)
ComputerDruid

61
điều này có vẻ như là một trạng thái xin lỗi - chúng ta có thực sự cần thiết lập thủ công cho mọi chi nhánh không? Tại sao chúng ta không thể đặt gốc là điều khiển từ xa mặc định và sau đó có mọi lần đẩy / kéo mặc định cho nhánh trên gốc có cùng tên? cái này khó quá
Alexander Mills

4
Ah, phần quan trọng đối với tôi ở đây là nếu bạn thả và tạo lại một điều khiển từ xa thì việc theo dõi được thiết lập bởi bản gốc fetchđã bị mất. Do đó cần phải thiết lập lại. :)
Ben

42

Xem: thẻ kiểm tra git, git pull không thành công trong chi nhánh

Nếu giống như tôi, bạn cần phải làm điều này mọi lúc, bạn có thể thiết lập bí danh để thực hiện tự động bằng cách thêm các mục sau vào .gitconfigtệp của mình :

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

Khi bạn thấy tin nhắn There is no tracking information..., hãy chạy:

 git set-upstream
 git push

Cảm ơn https://zarino.co.uk/post/git-set-upstream/


1
Đây là một cách để thêm nó vào toàn cầu .gitconfigtrong một dòng (có thể được sửa đổi cho các cấu hình cục bộ hoặc các cấu hình khác tương ứng):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis

17

Câu trả lời của ComputerDruid rất hay nhưng tôi nghĩ không cần thiết phải thiết lập thủ công trừ khi bạn muốn. Tôi đang thêm câu trả lời này vì mọi người có thể nghĩ rằng đó là một bước cần thiết.

Lỗi này sẽ biến mất nếu bạn chỉ định điều khiển từ xa mà bạn muốn kéo như bên dưới:

git pull origin master

Lưu ý rằng đó originlà tên của điều khiển từ xa và masterlà tên chi nhánh.


1) Cách kiểm tra tên của remote

git remote -v

2) Làm thế nào để xem những nhánh có sẵn trong kho lưu trữ.

git branch -r

1
Câu trả lời tốt nhất cho tôi, Cảm ơn!
Bahman.

7

Tôi chạy vào thông báo chính xác này thường xuyên bởi vì tôi tạo một nhánh cục bộ thông qua git checkout -b <feature-branch-name>mà không cần tạo nhánh từ xa trước.

Sau khi tất cả công việc đã hoàn thành và được cam kết cục bộ, bản sửa lỗi đã git push -utạo ra nhánh từ xa, đẩy tất cả công việc của tôi và sau đó là URL yêu cầu hợp nhất.


1
Để biết giá trị của nó, tôi đã phải chạy git push -u origin <my-feature-branch-name>để tạo ra nhánh từ xa và thúc đẩy công việc của mình
Donnie C

6

Tôi đã thử các ví dụ trên và không thể khiến chúng đồng bộ hóa với một nhánh (không chính chủ) mà tôi đã tạo trên một máy tính khác. Để làm nền, tôi đã tạo kho lưu trữ này trên máy tính A (git v 1.8) và sau đó nhân bản kho lưu trữ lên máy tính B (git 2.14). Tôi đã thực hiện tất cả các thay đổi của mình trên comp B, nhưng khi tôi cố gắng thay đổi AI trên máy tính thì không thể thực hiện được, nhận được lỗi tương tự ở trên. Tương tự như các giải pháp trên, tôi đã phải làm:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

hơi khác một chút nhưng hy vọng sẽ giúp được ai đó


Điều này làm việc cho tôi; Tôi cũng đang sử dụng một nhánh không chính chủ đã được thiết lập trên một máy tính khác. Sử dụng lệnh này trong Git Bash, sau đó tôi có thể nhận được các thay đổi của mình :)
Novastorm



3

1) nhánh git --set-upstream-to = origin / <master_branch>Feature /<your_current_branch>

2) git kéo



1

Điều tương tự cũng xảy ra với tôi trước đây khi tôi tạo một nhánh git mới trong khi không đẩy nó về nguồn gốc.

Hãy thử thực hiện hai dòng đó trước:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

Sau đó:

git pull origin name_of_new_branch

Nó sẽ ổn ngay bây giờ!


1

Điều này xảy ra do chi nhánh hiện tại không có theo dõi trên chi nhánh trên điều khiển từ xa. Vì vậy, bạn có thể làm điều đó với 2 cách.

  1. Kéo với tên chi nhánh cụ thể

git kéo nguồn gốc

  1. Hoặc bạn có thể chi nhánh cụ thể để theo dõi đến chi nhánh địa phương.

nhánh git --set-upstream-to = origin /


0

nhánh git --set-upstream-to = origin / main


2
Nó luôn hữu ích thêm một số lời giải thích cho câu trả lời của bạn, để làm cho nó rõ ràng và dễ hiểu hơn. Vui lòng đọc stackoverflow.com/help/how-to-answer .
32cupo

1
Ngoài quan điểm của @ 32cupo, điều này về cơ bản giống như câu trả lời được chấp nhận năm tuổi, nhưng ít giải thích hơn.
Jeremy Caney
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.