thẻ kiểm tra git, git kéo thất bại trong chi nhánh


133

Tôi đã nhân bản một kho lưu trữ git và sau đó kiểm tra một thẻ:

# git checkout 2.4.33 -b my_branch

Điều này không sao, nhưng khi tôi cố gắng chạy git pulltrong chi nhánh của mình, git đã phát sinh lỗi này:

Không có thông tin theo dõi cho các chi nhánh hiện tại. Vui lòng chỉ định chi nhánh bạn muốn hợp nhất với. Xem git-pull (1) để biết chi tiết

git pull <remote> <branch>

Nếu bạn muốn đặt thông tin theo dõi cho chi nhánh này, bạn có thể làm như vậy với:

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

Tôi muốn git pullchỉ cập nhật chi nhánh chính và để chi nhánh hiện tại của mình một mình (dù sao đó cũng là một 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à vì tôi có một tập lệnh tự động luôn git kéo kho lưu trữ và tất nhiên không thành công vì lỗi ở trên ..


Câu trả lời:


114

Chỉnh sửa: Đối với các phiên bản Git mới hơn, --set-upstream masterkhông được dùng nữa, bạn nên sử dụng --set-upstream-tothay thế:

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

Như đã nhắc, bạn chỉ có thể chạy:

git branch --set-upstream master origin/master

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


5
Điều này đã giải quyết vấn đề. Nhưng tôi vẫn phải hiểu làm thế nào chi nhánh chủ của tôi 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 pullvì tham chiếu đến nguồn gốc đã bị mất. Bây giờ nó hoạt động. Cảm ơn bạn!
Ariel

'git chi nhánh --set-upstream-to = origin / master master my_branch' đã làm việc cho tôi
Blue Clouds

90

Tôi đã có cùng một vấn đề và sửa nó bằng lệnh này:

$ git push -u origin master

Từ tệp trợ giúp, -u về cơ bản sẽ đặt mặc định cho các lần kéo:

-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).

48

Hãy thử các lệnh sau:

git pull origin master
git push -u origin master

9

Chuyển về nhánh chính bằng cách sử dụng

$ git checkout master

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

$ git pull origin/master

Sau đó, bạn có thể chuyển trở lại my_branchmộ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

5

@alesko : không thể chỉ làm git pullsau khi thanh toán my_branchđể cập nhật masterchi nhánh mà thôi.
Bởi vì git pullcũng sẽ hợp nhất với nhánh hiện tại -> trong kịch bản của bạn vớimy_branch

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

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

và theo tài liệu:

-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.

4

Đầu tiên, hãy chắc chắn rằng bạn đang ở đúng chi nhánh.
Sau đó (chỉ một lần):

git branch --track

Sau đó, nó hoạt động trở lại:

git pull

4

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

Các bước để khắc phục điều 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 làm điều này, khi bạn làm git pull, nó kéo từ nhánh được chỉ định.


3

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ớ.

--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ủ rồi. Nếu không, git branch -u origin/master mastersẽ làm việc


2

Thử cái 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, câu trả lời được bình chọn hàng đầu phù hợp hơn nhiều như một câu trả lời cho câu hỏi cũ này
fejese 14/11/14

1

Bạn cần thiết lập theo dõi (ngược dòng) cho chi nhánh hiện tại

git branch --set-upstream master origin/master

Đã bị phản đối thay vì bạn có thể sử dụng cờ --track

git branch --track master origin/master

Tôi cũng thích tài liệu tham khảo mà @casey chú ý:

-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

Điều làm việc cho tôi là: git chi nhánh --set-upstream-to = origin master Khi tôi thực hiện lại lần nữa, tôi chỉ nhận được các cập nhật từ chủ và cảnh báo đã biến mất.


1

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..., chỉ cần chạy git set-upstream, sau đó git pushmột lần nữa.

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


0

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

git fetch origin master

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


0

Lệnh này không được dùng nữa: 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 hoạt động với tôi:

git branch --set-upstream-to=origin/master master
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.