สาขาระยะไกลไม่ปรากฏใน“ git branch -r”


140

ฉันได้ผลักดันไปยังที่เก็บ Bitbucket ระยะไกลและเมื่อไม่นานมานี้เพื่อนร่วมงานได้ผลักดันสาขาใหม่ที่เขาสร้างไปยังที่เก็บเดียวกัน

ฉันพยายามดึงการเปลี่ยนแปลงที่เขาอัปโหลด

 $ git branch -a
 * master
 localbranch1
 localbranch2
 remotes/origin/master

สาขา $ git -r ต้นกำเนิด / ต้นแบบ

ใน UI ของเว็บสำหรับ Bitbucket ฉันสามารถดูสาขาที่เขาสร้างขึ้นได้ ฉันจะทำเช่นนี้ได้อย่างไร?

ลองครั้งต่อไป:

$ git fetch bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

หากสาขาที่เขาสร้างขึ้นเรียกว่าnew_branch_bฉันควรคาดหวังว่าจะได้เห็นสิ่งต่อไปนี้หรือไม่

$ git branch -r
origin/master
origin/new_branch_b

ลองครั้งที่สาม:

$ git remote update
Fetching bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

$ git branch -r
  origin/master

ลองครั้งที่สี่:

[remote "bitbucket"]
url = https://user@bitbucket.org/user/repo.git

ฉันเรียกรีโมตbitbucketมากกว่าที่มา (อย่างน้อยนั่นคือสิ่งที่ฉันจำได้ฉันตั้งค่าไว้เมื่อครู่แล้ว)

ลองครั้งที่ห้า:

ฉันอัปเดตการกำหนดค่าระยะไกล Bitbucket ตามคำตอบของ kan :

$ git config -e

[remote "bitbucket"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/bitbucket/*

สำหรับคนส่วนใหญ่จะเรียกว่าต้นกำเนิด:

[remote "origin"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

หลังจากนั้น

$ git remote update

Fetching bitbucket
Password for 'https://user@bitbucket.org':
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 35 (delta 21), reused 0 (delta 0)
Unpacking objects: 100% (35/35), done.
From https://bitbucket.org/user/repo
 * [new branch]      branch_name1 -> origin/branch_name1
 * [new branch]      branch_name2    -> origin/branch_name2

.... และอื่น ๆ

ฉันคิดว่าgit fetch originจะใช้ได้git remote updateเช่นกัน


1
เย็น แต่บางทีมันอาจจะมีความรู้สึกมากขึ้นในการใช้งานแทนrefs/remotes/bitbucket/* refs/remotes/origin/*
kan

ขอขอบคุณระบุอย่างถูกต้องเกี่ยวกับความสอดคล้องของการตั้งชื่อ อาจเหมาะสมกว่าที่จะเปลี่ยน bitbucket ให้เป็นจุดเริ่มต้น! Convention and all that :)
Feargal

1
git fetch originทำงาน
จาน

คำตอบ:


110

remoteส่วนยังระบุดึงข้อมูลกฎระเบียบ คุณสามารถเพิ่มสิ่งนี้ลงไปเพื่อดึงข้อมูลสาขาทั้งหมดจากระยะไกล:

fetch = +refs/heads/*:refs/remotes/origin/*

(หรือแทนที่originด้วยbitbucket)

โปรดอ่านที่นี่: 10.5 Git Internals - The Refspec


3
สิ่งนี้แก้ไขปัญหาการแยกสาขาที่เกิดขึ้นอย่างต่อเนื่องใน Git ที่ฉันมีมาหลายสัปดาห์ ทันใดนั้นการอัปเดตระยะไกลของคอมไพล์ทั้งหมดก็เริ่มทำงาน ขอบคุณ!
PålOliver

2
ด้วยเหตุผลบางอย่างดูเหมือนว่า: fetch = +refs/heads/master:refs/remotes/origin/masterสำหรับฉัน แทนที่masterด้วย*แก้ไขปัญหาของฉัน
Sebastian Blask

2
สิ่งนี้มีประโยชน์มากหากคุณแปลงร่างโคลนตื้นเป็นแบบไม่ชัด
Warpzit

@kan คุณรู้ไหมว่าทำไมบางครั้งถึงเกิดเหตุการณ์นี้ขึ้น? มันเพิ่งเกิดขึ้นกับฉันเมื่อgit cloneมีโครงการ ฉันจำไม่ได้ว่าได้ทำอะไรพิเศษกับคอมไพล์ในพื้นที่ของฉัน
dotnetCarpenter

@dotnetCarpenter ไม่แน่ใจ ... ไม่เคยเกิดขึ้นกับฉันโดยไม่คาดคิด เป็นไปได้ไหมที่cloneถูกขัดจังหวะแล้วกลับมาทำงานต่อ? หรือมีสิ่งอื่นที่รองรับ repo ไปพร้อม ๆ กัน?
kan

223

อัปเดตรีโมทของคุณหากคุณยังไม่ได้ดำเนินการ:

$ git remote update
$ git branch -r

1
ฉันใช้ไคลเอนต์ GitHub บน Win และบางครั้งก็ไม่ได้อัปเดตสาขาระยะไกล บรรทัดแรก "git remote update" ทำงานได้อย่างมีเสน่ห์ ง่ายและสะอาด
Stefano Buora

หลังจากที่git remote updateฉันเห็นสาขาใหม่ใน UI ขอบคุณ
Tinkaal Gogoi

มันไม่ได้ช่วยอะไร
dKab

ผมคิดว่าผมได้เรียกสาขา aleady ประสบความสำเร็จ git branch -rแต่จำเป็นเพียงเพื่อดูว่ามันมีการระบุไว้ ในgit-scm.com/docs/git-branchระบุว่า "ตัวเลือก -r ทำให้สาขาการติดตามระยะไกลแสดงรายการและตัวเลือก -a แสดงทั้งสาขาในพื้นที่และสาขาระยะไกล" เรียกทุกสาขารีโมททั้งหมดที่ระบุไว้ในgit remote update git remote -v
Rock Lee

หลังจากเรียกใช้สิ่งนี้ฉันสามารถวิ่งได้git checkout origin/masterแล้วแยกส่วนหัวที่แยกออกไปยังสาขาหลักของฉันgit branch master; git checkout master
Dfranc3373

37

หากคุณโคลนด้วย--depthพารามิเตอร์พารามิเตอร์จะตั้งค่า.git/configไม่ให้ดึงข้อมูลสาขาทั้งหมด แต่จะเป็นมาสเตอร์เท่านั้น

คุณสามารถละเว้นพารามิเตอร์หรืออัปเดตไฟล์การกำหนดค่าจาก

fetch = +refs/heads/master:refs/remotes/origin/master

ถึง

fetch = +refs/heads/*:refs/remotes/origin/*

2
ขอบคุณ! คำตอบของคุณสามารถแก้ไขปัญหาได้อย่างง่ายดายและดูเหมือนเป็นวิธีที่ถูกต้อง แต่คุณควรเพิ่มว่ามีไฟล์ config อยู่.git/configเพื่อให้คนอื่นค้นพบได้
dotnetCarpenter

19

ฉันมีปัญหาเดียวกัน ดูเหมือนว่าวิธีแก้ปัญหาที่ง่ายที่สุดคือเพียงแค่ลบรีโมตอ่านและดึงข้อมูล


1
ใช้เวลามากมายเพื่อค้นหาคำตอบนี้ วิธีนี้ใช้งานได้โดยไม่มีปัญหาใด ๆ ขอบคุณ. :)
kisanme

1
ทำงานให้ฉันเช่นกันค่อนข้างแปลกที่สิ่งนี้แก้ไขได้
CailinP

1
git remote -vจะแสดงรีโมทของคุณเพื่อให้คุณได้รับ url git remote rm originจะลบออกgit remote add origin <url>จะเพิ่มใหม่
สิทธารถะ

สิ่งนี้ได้ผลสำหรับฉัน ฉันมีโมดูลย่อย git ซึ่งอย่างใดไม่ได้ดึงข้อมูลสาขาระยะไกลใด ๆ นอกจากต้นแบบ การลบและเพิ่มอีกครั้งแก้ไขได้
Zamrony P.Juhara

ทำงานให้ฉัน แต่ตอนนี้ฉันได้รับคำเตือนwarning: ignoring broken ref refs/remotes/origin/HEAD
dafnahaktana

8

แต่น่าเสียดายgit branch -aและgit branch -rไม่ได้แสดงสาขาระยะไกลทั้งหมดถ้าคุณยังไม่ได้ดำเนินการ "GIT ดึงข้อมูล"

git remote show originทำงานอย่างสม่ำเสมอตลอดเวลา ยังgit show-refแสดงการอ้างอิงทั้งหมดในที่เก็บ Git อย่างไรก็ตามมันทำงานเหมือนกับgit branchคำสั่ง


มีประโยชน์! ทำงานให้ฉัน
Sarjerao Ghadage
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.