Git รีเฟรชรายการสาขาระยะไกลเมื่อใด


496

การใช้git branch --allแสดงสาขาระยะไกลและท้องถิ่นทั้งหมด Git รีเฟรชรายการนี้เมื่อใด

เมื่อดึง / ดัน และฉันจะรีเฟรชโดยใช้Git Bash ได้อย่างไร


5
ตามหมายเหตุgit ls-remoteอาจน่าสนใจที่นี่
jthill

คำตอบ:


1221

หากต้องการอัปเดตรายการท้องถิ่นของสาขาระยะไกล:

git remote update origin --prune

เพื่อแสดงให้เห็นถึงสาขาท้องถิ่นและสาขาที่อยู่ห่างไกลที่ Git รู้

git branch -a

143
git remote update origin --pruneคือสิ่งที่ฉันกำลังมองหาขอบคุณ
WonderLand

6
ความแตกต่างระหว่างคำตอบนี้ซึ่งใช้git remote updateและคำตอบที่ได้รับการยอมรับซึ่งการใช้งานgit fetch, ดูที่นี่
แดงถั่ว

6
นี่คือคำตอบที่ถูกต้อง git fetchไม่ได้ลบแคชท้องถิ่นของสาขาระยะไกล เท่านั้น--pruneก็สามารถที่จะทำความสะอาดมันทั้งหมดขึ้น
เฟลิเป้อัลวาเรซ

23
คุณสามารถให้คอมไพล์ทำได้โดยอัตโนมัติด้วยgit config remote.origin.prune true
kjhf

8
git remote prune originมีเอฟเฟกต์แบบเดียวกันและคุณพิมพ์น้อยลง
Dvin

27

ฉันเชื่อว่าหากคุณเรียกใช้git branch --allจาก Bash รายการของสาขาระยะไกลและสาขาท้องถิ่นที่คุณเห็นจะสะท้อนให้เห็นถึงสิ่งที่ Git "รู้" ในพื้นที่ของคุณในเวลาที่คุณเรียกใช้คำสั่ง เนื่องจาก Git ของคุณเป็นรุ่นล่าสุดเสมอเกี่ยวกับสาขาท้องถิ่นในระบบของคุณรายการของสาขาท้องถิ่นจะถูกต้องเสมอ

อย่างไรก็ตามสำหรับสาขาระยะไกลนี้ไม่จำเป็นต้องเป็นกรณี Git ในพื้นที่ของคุณรู้เพียงแค่สาขาระยะไกลที่เห็นในการดึงข้อมูลครั้งล่าสุด (หรือดึง) ดังนั้นจึงเป็นไปได้ที่คุณอาจทำงานgit branch --allและไม่เห็นสาขาระยะไกลใหม่ซึ่งปรากฏหลังจากครั้งสุดท้ายที่คุณดึงหรือดึง

เพื่อให้มั่นใจว่าท้องถิ่นของคุณและรายชื่อสาขาที่ห่างไกลจะถึงวันที่คุณสามารถทำgit fetch ก่อนที่จะgit branch --allทำงาน

สำหรับข้อมูลเพิ่มเติมสาขา "ระยะไกล" ซึ่งปรากฏขึ้นเมื่อคุณเรียกใช้git branch --allจะไม่ได้อยู่ห่างไกลจริงๆ พวกเขาอยู่ในท้องถิ่นจริง ตัวอย่างเช่นสมมติว่ามีสาขาอยู่บนรีโมทเรียกว่าfeatureคุณดึงอย่างน้อยหนึ่งครั้งใน Git ท้องถิ่นของคุณ คุณจะเห็นระบุว่าเป็นสาขาเมื่อคุณเรียกใช้origin/feature git branch --allแต่สาขานี้จริง ๆ แล้วเป็นสาขา Git ท้องถิ่น เมื่อคุณดำเนินgit fetch originการสาขาการติดตามนี้จะได้รับการอัปเดตเมื่อมีการเปลี่ยนแปลงใหม่จากรีโมต นี่คือสาเหตุที่รัฐในท้องถิ่นของคุณสามารถค้างเนื่องจากอาจมีสาขาระยะไกลใหม่หรือสาขาการติดตามของคุณอาจกลายเป็นเก่า


4
ใช่git fetchทำมัน
BendEg

14
หมายเหตุถึง downvoters: หากคุณรู้สึกว่าข้อมูลที่ถูกต้องพร้อมคำอธิบายที่มีเจตนาดีสมควรได้รับ downvote อย่างน้อยก็พูดออกมาและแสดงความคิดเห็น
ทิม Biegeleisen

3
git fetch--pruneไม่ทำงานสำหรับฉันจำเป็นต้องเพิ่ม Btw ฉันไม่ใช่ downvoter;)
Deqing

3
git fetchไม่ลบสาขาระยะไกลที่ถูกลบ นั่นอาจเป็นเหตุผลที่บางคน downvoted
Jérôme MEVEL

@ JérômeMEVELเป็นเรื่องมหัศจรรย์สำหรับฉันที่คำตอบที่ยอมรับในขณะนี้มี1,000 upvotes มันบ้า ... หวังว่าฉันจะได้รับการสัมผัสแบบนั้น :-)
ทิม Biegeleisen

24

OP ไม่ได้ขอให้ล้างข้อมูลจากรีโมททั้งหมด แต่เป็นรีโมตเริ่มต้นทุกสาขา

ดังนั้นgit fetch --pruneสิ่งที่ควรใช้

การตั้งค่าgit config remote.origin.prune trueทำให้--pruneอัตโนมัติ ในกรณีที่เพิ่งgit fetchจะตัดกิ่งก้านสาขาที่ห่างไกลจากสำเนาในเครื่อง ดูเพิ่มเติมพรุนอัตโนมัติด้วย Git ดึงข้อมูลหรือดึง

โปรดทราบว่านี่จะไม่ล้างสาขาท้องถิ่นที่ไม่ได้ติดตามสาขาระยะไกลอีกต่อไป ดูวิธีการตัดกิ่งติดตามท้องถิ่นที่ไม่มีอยู่ในระยะไกลอีกต่อไปสำหรับสิ่งนั้น


เพื่อให้สั้นลงหน่อยgit fetch -p
Michael Warner

2

ใช้git fetchเพื่อดึงสาขาที่สร้างล่าสุดทั้งหมด


1
git fetchไม่ได้เปลี่ยนแปลงอะไรเลยสำหรับฉันด้วย git 2.17.1 คุณใช้เวอร์ชันและตัวเลือกใด
PointedEars

2
คุณต้องการอย่างใดอย่างหนึ่ง--pruneหรือgit config remote.NAME.prune trueเพื่อนี้เพื่อแก้ปัญหา OP
โอลิเวอร์

-1

หากคุณกำลังใช้ Eclipse และต้องการดูสาขาใหม่จากอัปสตรีม

ในมุมมอง Git คลิกขวาบนที่เก็บ Git แล้วเลือก "ดึงข้อมูลจากอัปสตรีม" สิ่งนี้ดึงสาขาระยะไกลใหม่


-8

หากคุณกำลังใช้ Eclipse

  1. เปิด "ที่เก็บ Git"
  2. ค้นหาพื้นที่เก็บข้อมูลของคุณ
  3. เปิด "สาขา" จากนั้น "ติดตามระยะไกล"

Git

พวกเขาทั้งหมดควรอยู่ในนั้น คลิกขวาและ "ชำระเงิน"


คำถามนี้จะตอบคำถามได้อย่างไร - "Git รีเฟรชรายการสาขาระยะไกลเมื่อไหร่"
Peter Mortensen

เมื่อฉันต้องการที่จะรีเฟรชสาขาในท้องถิ่นของฉันในคราสฉัน googled และพาฉันไปที่นี่ โพสต์นี้ช่วยคนจำนวนน้อยจริง ๆ เพราะมันมี upvotes อยู่บ้าง บางทีฉันอาจจะเข้าใจผิดคำถาม สำหรับฉัน Eclipse IS Git (ส่วนต่อประสานกับมัน) ขออภัยที่ทำให้ทุกคนขุ่นเคือง!
markthegrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.