แท็กการชำระเงิน git การดึงคอมไพล์ล้มเหลวในสาขา


134

ฉันได้โคลนที่เก็บ git แล้วตรวจสอบแท็ก:

# git checkout 2.4.33 -b my_branch

ไม่เป็นไร แต่เมื่อฉันพยายามเรียกใช้git pullในสาขาของฉันคอมไพล์พ่นข้อผิดพลาดนี้:

ไม่มีข้อมูลการติดตามสำหรับสาขาปัจจุบัน โปรดระบุสาขาที่คุณต้องการรวมเข้าด้วยกัน ดู git-pull (1) สำหรับรายละเอียด

git pull <remote> <branch>

หากคุณต้องการตั้งค่าข้อมูลการติดตามสำหรับสาขานี้คุณสามารถทำได้โดย:

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

ฉันต้องการgit pullอัปเดตสาขาหลักเท่านั้นและปล่อยให้สาขาปัจจุบันของฉันอยู่คนเดียว (มันเป็นแท็กอยู่ดี) สิ่งนี้เป็นไปได้หรือไม่?

เหตุผลที่ฉันต้องการสิ่งนี้คือฉันมีสคริปต์อัตโนมัติที่ git ดึงที่เก็บเสมอและแน่นอนว่าล้มเหลวเนื่องจากข้อผิดพลาดด้านบน ..


คำตอบ:


115

แก้ไข:สำหรับ Git เวอร์ชันใหม่กว่า--set-upstream masterเลิกใช้งานแล้วคุณควรใช้--set-upstream-toแทน:

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

ตามที่แจ้งคุณสามารถเรียกใช้:

git branch --set-upstream master origin/master

หลังจากนั้นคุณสามารถเรียกใช้git pullเพื่ออัปเดตรหัสของคุณ


5
วิธีนี้ช่วยแก้ปัญหาได้ แต่ฉันยังต้องเข้าใจว่าสาขาหลักของฉันสูญเสียการอ้างอิงถึงแหล่งกำเนิดอย่างไร git checkout masterฉันอยู่ในสาขาและทำ ฉันทำไม่ได้git pullเพราะการอ้างอิงถึงแหล่งกำเนิดหายไป ตอนนี้ใช้งานได้แล้ว ขอบคุณ!
Ariel

'git branch --set-upstream-to = origin / master master my_branch' ทำงานให้ฉัน
Blue Clouds

90

ฉันมีปัญหาเดียวกันและแก้ไขด้วยคำสั่งนี้:

$ git push -u origin master

จากไฟล์ช่วยเหลือโดยทั่วไป -u จะตั้งค่าเริ่มต้นสำหรับการดึง:

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


9

เปลี่ยนกลับไปที่สาขาหลักโดยใช้

$ git checkout master

จากนั้นเรียกใช้การgit pullดำเนินการ

$ git pull origin/master

หลังจากนั้นคุณสามารถเปลี่ยนกลับไปเป็นmy_branchอีกครั้งได้


6
นั่นคือสิ่งที่ฉันพยายามหลีกเลี่ยง ฉันอยากรู้ว่ามีวิธี "อย่างเป็นทางการ" ไหม
alesko

5

@alesko : ไม่สามารถทำได้git pullหลังจากชำระเงินmy_branchเพื่ออัปเดตmasterสาขาเท่านั้น
เพราะgit pullจะรวมกับสาขาปัจจุบัน -> ในสถานการณ์ของคุณไปยังไฟล์my_branch

@Simon : ที่จะผลักดัน ทำไมเป็นอย่างนั้น?

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

และตามเอกสาร:

-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

ขั้นแรกตรวจสอบให้แน่ใจว่าคุณอยู่ในสาขาที่ถูกต้อง
จากนั้น (ครั้งเดียวเท่านั้น):

git branch --track

หลังจากนั้นจะใช้งานได้อีกครั้ง:

git pull

4

คุณอาจมีหลายสาขา และสาขาปัจจุบันของคุณไม่ได้ตั้งค่าต้นน้ำในระยะไกล

ขั้นตอนในการแก้ไข:

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

เช่น

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

หลังจากทำสิ่งนี้เมื่อคุณทำgit pullมันจะดึงจากสาขาที่ระบุ


4

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

git pull origin master

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

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

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

--set-upstream เลิกใช้งานแล้วใน git 1.9.x เห็นได้ชัดว่า ต่อไปคุณต้องการใช้สิ่งที่ต้องการ

git branch -u origin/master

สมมติว่าคุณได้ตรวจสอบมาสเตอร์แล้ว ถ้าไม่ได้ git branch -u origin/master masterจะทำงาน


2

ลองทำตามนี้

git checkout master

git pull origin master

2
นี่ตอบคำถามไม่ได้จริงๆ แม้ว่าจะไม่มีคำตอบที่ได้รับการยอมรับ แต่คำตอบที่ได้รับการโหวตสูงสุดก็เหมาะสมกว่าสำหรับคำตอบสำหรับคำถามเก่านี้
fejese

2

ถ้าชอบฉันคุณต้องทำสิ่งนี้ตลอดเวลาคุณสามารถตั้งค่านามแฝงให้ทำโดยอัตโนมัติโดยเพิ่มสิ่งต่อไปนี้ใน.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

คุณต้องตั้งค่าการติดตามของคุณ (ต้นน้ำ) สำหรับสาขาปัจจุบัน

git branch --set-upstream master origin/master

เลิกใช้แล้วแทนที่จะใช้แฟล็ก --track

git branch --track master origin/master

ฉันชอบเอกสารอ้างอิงที่ @casey notice:

-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

สิ่งที่ได้ผลสำหรับฉันคือ git branch --set-upstream-to = origin master เมื่อฉันดึงข้อมูลอีกครั้งฉันได้รับการอัปเดตจาก master เท่านั้นและคำเตือนก็หายไป


0

ในการดาวน์โหลดการอัปเดต:

git fetch origin master

origin/masterแต่นี้เป็นเพียงแค่การปรับปรุงการอ้างอิงที่เรียกว่า วิธีที่ดีที่สุดในการอัปเดตท้องถิ่นของคุณmasterคือการชำระเงิน / รวมที่กล่าวถึงในความคิดเห็นอื่น หากคุณสามารถรับประกันได้ว่าท้องถิ่นของคุณmasterไม่ได้เปลี่ยนไปจากลำตัวหลักที่origin/masterเปิดอยู่คุณสามารถใช้git update-refเพื่อแมปปัจจุบันของคุณmasterกับจุดใหม่ได้ แต่นั่นอาจไม่ใช่วิธีที่ดีที่สุดที่จะใช้เป็นประจำ ...


0

คำสั่งนี้เลิกใช้แล้ว: git branch --set-upstream master origin/master

ดังนั้นเมื่อพยายามตั้งค่าการติดตามนี่คือคำสั่งที่เหมาะกับฉัน:

git branch --set-upstream-to=origin/master master
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.