ไม่มีข้อมูลการติดตามสำหรับสาขาปัจจุบัน


581

ฉันใช้ github มาในระยะเวลาอันสั้นและฉันมักจะใช้ไคลเอนต์เพื่อทำการคอมมิทและดึง ฉันตัดสินใจลองจาก bash git เมื่อวานนี้และฉันสร้าง repo และไฟล์ที่กำหนดใหม่สำเร็จ

วันนี้ฉันทำการเปลี่ยนแปลงที่เก็บจากคอมพิวเตอร์เครื่องอื่นฉันได้กระทำการเปลี่ยนแปลงและตอนนี้ฉันกลับบ้านและดำเนินการgit pullเพื่ออัปเดตเวอร์ชันท้องถิ่นของฉันและฉันได้รับสิ่งนี้:

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>

ผู้ร่วมสนับสนุนรายนี้คือฉันและไม่มีสาขา (แค่เป็นเจ้านาย) ฉันอยู่บน windows และฉันได้ทำการดึงจาก git bash:

ป้อนคำอธิบายรูปภาพที่นี่

สถานะ git:

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

สาขา git:

$ git branch
* master

ผมทำอะไรผิดหรือเปล่า?


โอเคแล้วประมาณ a git remote -v? พูดว่าอะไร?
criswell


นอกจากนี้คุณยังจะได้รับข้อผิดพลาดว่าถ้าคุณยังไม่ได้แผ่นซีดีลงในไดเรกทอรี repo git pullโคลนเมื่อมีการดำเนิน
Victoria Stuart

ด้วย Git 2.24, Q4 2019 git pull --set-upstream-to=origin/master masterเป็นไปได้ ดูคำตอบของฉันด้านล่าง
VonC

คำตอบ:


950

คุณสามารถระบุสาขาที่คุณต้องการดึง:

git pull origin master

หรือคุณสามารถตั้งค่าเพื่อให้สาขาหลักในท้องถิ่นของคุณติดตามสาขาหลัก Github เป็นอัปสตรีม:

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

การติดตามสาขานี้ถูกตั้งค่าให้คุณโดยอัตโนมัติเมื่อคุณโคลนที่เก็บ (สำหรับสาขาเริ่มต้นเท่านั้น) แต่ถ้าคุณเพิ่มรีโมตในที่เก็บที่มีอยู่คุณต้องตั้งค่าการติดตามด้วยตัวเอง โชคดีที่คำแนะนำจาก git ทำให้ง่ายต่อการจดจำวิธีการทำ


3
ที่สมบูรณ์แบบ! มันทำงานได้ ดังนั้นสิ่งที่เกิดขึ้นคือไม่มี "สาขาเริ่มต้น" สำหรับ "ดึง git" เริ่มต้น? นั่นเป็นสาเหตุที่เกิดข้อผิดพลาด?
valerio0999

16
--set-upstream เลิกใช้แล้วใน git 1.9.x เห็นได้ชัดว่า ก้าวไปข้างหน้าคุณต้องการใช้อะไรเช่นgit branch -u origin/masterสมมติว่าคุณได้ตรวจสอบอาจารย์แล้ว ถ้าไม่git branch -u origin/master masterจะทำงาน
บาร์ตอ่าน

5
@BartRead อัปเดตเพื่อใช้--set-upstream-to=ไวยากรณ์ที่ชัดเจนขึ้นใหม่ (ซึ่งใช้แทน--set-upstream)
ComputerDruid

61
ดูเหมือนว่าจะเป็นสถานการณ์ที่น่าเสียใจเราจำเป็นต้องตั้งค่านี้ด้วยตนเองสำหรับทุกสาขา ทำไมเราไม่สามารถตั้งค่าเริ่มต้นให้เป็นรีโมทเริ่มต้นจากนั้นให้ทุกผลัก / ดึงค่าเริ่มต้นไปยังสาขาที่จุดกำเนิดที่มีชื่อเดียวกัน มันยากเหลือเกิน
Alexander Mills

4
ส่วนสำคัญสำหรับฉันที่นี่คือถ้าคุณปล่อยและสร้างรีโมตใหม่การติดตามที่ตั้งค่าโดยต้นฉบับfetchจะสูญหายไป ดังนั้นจำเป็นต้องตั้งค่าใหม่อีกครั้ง :)
Ben

42

ดู: แท็กชำระเงิน git การดึง git ล้มเหลวในสาขา

ถ้าชอบฉันคุณต้องทำสิ่งนี้ตลอดเวลาคุณสามารถตั้งค่านามแฝงเพื่อทำมันโดยอัตโนมัติโดยเพิ่มสิ่งต่อไปนี้ใน.gitconfigไฟล์ของคุณ:

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

เมื่อคุณเห็นข้อความThere is no tracking information...ให้เรียกใช้:

 git set-upstream
 git push

ขอบคุณhttps://zarino.co.uk/post/git-set-upstream/


1
นี่คือวิธีการเพิ่มลงในระดับโลก.gitconfigในหนึ่งบรรทัด (สามารถแก้ไขได้สำหรับการกำหนดค่าในท้องถิ่นหรืออื่น ๆ ):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis

17

คำตอบของ ComputerDruid นั้นยอดเยี่ยม แต่ฉันไม่คิดว่าจำเป็นต้องตั้งค่า upstream ด้วยตนเองเว้นแต่คุณต้องการ ฉันกำลังเพิ่มคำตอบนี้เพราะคนอาจคิดว่านั่นเป็นขั้นตอนที่จำเป็น

ข้อผิดพลาดนี้จะหายไปหากคุณระบุรีโมตที่คุณต้องการดึงเหมือนด้านล่าง:

git pull origin master

โปรดทราบว่าoriginเป็นชื่อของรีโมทและmasterเป็นชื่อสาขา


1) วิธีตรวจสอบชื่อของรีโมต

git remote -v

2) วิธีดูว่าสาขาใดที่มีอยู่ในพื้นที่เก็บข้อมูล

git branch -r

1
คำตอบที่ดีที่สุดสำหรับฉันขอบคุณ!
Bahman

7

ฉันพบข้อความที่ถูกต้องนี้บ่อยครั้งเพราะฉันสร้างสาขาท้องถิ่นgit checkout -b <feature-branch-name>โดยไม่ต้องสร้างสาขาระยะไกลก่อน

หลังจากงานทั้งหมดเสร็จสิ้นและมุ่งมั่นแบบท้องถิ่นการแก้ไขคือgit push -uสิ่งที่สร้างสาขาระยะไกลผลักงานของฉันทั้งหมดแล้วตามด้วย URL คำร้องขอผสาน


1
สำหรับสิ่งที่คุ้มค่าฉันต้องทำงานgit push -u origin <my-feature-branch-name>เพื่อสร้างสาขาระยะไกลและผลักดันงานของฉัน
Donnie C

6

ฉันลองตัวอย่างข้างต้นและไม่สามารถทำให้พวกเขาซิงค์กับสาขา (ไม่ใช่อาจารย์) ที่ฉันสร้างขึ้นบนคอมพิวเตอร์เครื่องอื่น สำหรับพื้นหลังฉันสร้างที่เก็บนี้บนคอมพิวเตอร์ A (git v 1.8) จากนั้นโคลนที่เก็บลงบนคอมพิวเตอร์ B (git 2.14) ฉันทำการเปลี่ยนแปลงทั้งหมดใน comp B แต่เมื่อฉันพยายามดึงการเปลี่ยนแปลงไปยังคอมพิวเตอร์ AI ไม่สามารถทำได้การได้รับข้อผิดพลาดด้านบนเหมือนกัน คล้ายกับโซลูชันข้างต้นฉันต้องทำ:

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

แตกต่างกันเล็กน้อย แต่หวังว่าจะช่วยใครบางคน


สิ่งนี้ได้ผลสำหรับฉัน ฉันยังใช้สาขาที่ไม่ใช่สาขาหลักซึ่งติดตั้งบนคอมพิวเตอร์เครื่องอื่น การใช้คำสั่งนี้ใน Git Bash ฉันก็สามารถรับการเปลี่ยนแปลงของฉันได้แล้ว :)
23414


4

ด้วย Git 2.24 คุณจะไม่ต้องทำ

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

คุณจะสามารถทำสิ่งต่อไปนี้

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

ดูเพิ่มเติมที่ " รีโมตเริ่มต้นและสาขาที่ใช้-uตัวเลือก - ทำงานpushได้ แต่ไม่ใช่pull "




1

สิ่งเดียวกันเกิดขึ้นกับฉันก่อนหน้านี้เมื่อฉันสร้างสาขา git ใหม่ในขณะที่ไม่ผลักไปที่ต้นกำเนิด

ลองเรียกใช้สองบรรทัดเหล่านี้ก่อน:

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

แล้ว:

git pull origin name_of_new_branch

มันควรจะดีตอนนี้!


1

สิ่งนี้เกิดขึ้นเนื่องจากสาขาปัจจุบันไม่มีการติดตามสาขาในรีโมต คุณสามารถทำได้ 2 วิธี

  1. ดึงด้วยชื่อสาขาเฉพาะ

git pull master ต้นกำเนิด

  1. หรือคุณสามารถระบุสาขาเพื่อติดตามสาขาในท้องถิ่น

สาขา git --set-upstream-to = origin /


0

สาขา git --set-upstream-to = origin / main


2
เป็นประโยชน์เสมอเพิ่มคำอธิบายคำตอบของคุณเพื่อให้ชัดเจนและเข้าใจได้ง่ายขึ้น โปรดอ่านstackoverflow.com/help/how-to-answer
32cupo

1
นอกจากประเด็นของ @ 32cupo แล้วสิ่งนี้ก็เหมือนกับคำตอบที่ยอมรับได้ห้าปี แต่มีคำอธิบายน้อยกว่า
Jeremy Caney
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.