Git pruning คืออะไร?


88

ฉันได้ตัดกิ่งที่ห่างไกลออกไปโดยไม่ได้ตั้งใจและฉันไม่รู้จริงๆว่าผลของสิ่งนี้คืออะไร (ฉันคลิกปุ่ม "พรุนกิ่งระยะไกล" ในส่วนขยาย Git โดยคิดว่ามันจะลบสาขาระยะไกล)

เอกสารอย่างเป็นทางการระบุว่า "git-prune - ตัดวัตถุที่ไม่สามารถเข้าถึงได้ทั้งหมดออกจากฐานข้อมูลวัตถุ" ฉันไม่เข้าใจจริงๆว่านี่หมายถึงอะไร ฉันเดาว่านี่อาจจะลบสาขาที่ผสานออกไปแล้ว แต่ฉันไม่แน่ใจจริงๆ


อาจซ้ำกันได้ของstackoverflow.com/questions/4040717/…
Raghavan

1
อาจคุ้มค่าที่จะดูgit gc: git-scm.com/docs/git-pruneด้วย
kovac

คำตอบ:


93

"พรุนสาขาระยะไกล" ใน Git Extensions เรียกใช้git remote pruneคำสั่งซึ่งจะลบสาขาการติดตามระยะไกลในเครื่องของคุณที่ไม่มีสาขาอยู่บนรีโมทอีกต่อไป

ดูที่นี่: https://git-scm.com/docs/git-remote#git-remote-empruneem


ดังนั้นโดยทั่วไปจึงให้ความสำคัญกับรีโมตของคุณและปรับท้องถิ่นของคุณให้เข้ากับสาขาที่อยู่ห่างไกลของคุณหรือไม่?
น้ำผึ้ง

3
@ ฮันนี่ไม่มันแค่ลบสาขาติดตามระยะไกลในพื้นที่สาขาปกติจะไม่แตะต้อง
1615903

32

แค่นี้ขยะก็สะสมกิ่งไม้ของคุณ

นั่นหมายความว่าหากไม่สามารถเข้าถึงวัตถุ (การกระทำ) ในบรรพบุรุษของสาขาใด ๆ ของคุณได้วัตถุนั้นจะถูกลบออกจากฐานข้อมูล git และไม่สามารถเข้าถึงได้อีกต่อไป

นี่เป็นเพียงการทำความสะอาดที่เก็บ git เล็กน้อยและทำให้เบาขึ้น


4
ตามเอกสารประกอบสำหรับงานดูแลบ้านเช่นนี้อาจจะดีกว่าที่จะทำgit gcแทนที่จะgit pruneทำโดยหลักแล้วจะทำ git prune ด้วย
kovac

1
downvote: คำตอบนี้ (และคำถามสำหรับเรื่องที่) สับสนและgit prune git remote pruneพวกเขาไม่เหมือนกันอย่างหลังล้างสาขาที่ไม่มีอยู่บนรีโมตอีกต่อไปในขณะที่ปล่อยให้สาขาในพื้นที่โดยไม่ถูกแตะต้อง
JBert

12

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

ดังนั้นคำสั่ง prune จึงต้องมีชื่อ repo ในกรณีส่วนใหญ่มันเป็นgit remote prune originแต่คุณสามารถเรียกอะไร repo originของคุณก็ไม่จำเป็นต้องเป็น


2

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

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