หนึ่งในคุณสมบัติที่แข็งแกร่งที่สุดของ Git คือกิ่งก้านที่มีน้ำหนักเบา ช่วยให้คุณทำงานในขั้นตอนการพัฒนาคู่ขนานได้อย่างมีประสิทธิภาพ นักพัฒนาอาจสร้างสาขาแยกสำหรับจุดบกพร่องแยกต่างหาก ทั้งเวลาและพื้นที่สาขาแทบไม่มีค่าใช้จ่าย
รับซ่อมจอราคาถูกๆ
เวิร์กโฟลว์ git จำนวนมากจัดการกับทั้งสาขาระยะยาวและชั่วคราว ดังนั้นจึงมักมีความจำเป็นต้องลบสาขาระหว่างการพัฒนา บางครั้งมีความจำเป็นต้องลบสาขาที่ใช้ร่วมกัน จากเซิร์ฟเวอร์ระยะไกล เช่นเดียวกับสาขาในเครื่อง
ทำไมต้องลบสาขา?
อย่างแรก หากคุณยังคงคุ้นเคยกับ git อยู่ มีโอกาสค่อนข้างดีที่คุณจะสร้างสาขาและตัดสินใจว่าคุณไม่จำเป็นต้องทำ หรือคุณอาจกำลังทดลองกับกิ่งก้านและต้องการเคลียร์ตัวเอง นี่เป็นเรื่องปกติเนื่องจากการแตกสาขาใน git เป็นการดำเนินการที่มีน้ำหนักเบา มันเร็วมากและใช้พื้นที่ดิสก์อย่างมีประสิทธิภาพ
ด้วยเหตุนี้ เวิร์กโฟลว์การพัฒนา git จำนวนมากจึงสนับสนุนการแตกสาขา แม้แต่งานขนาดเล็กหรือสั้นมาก ตัวอย่างเช่น กลยุทธ์ทั่วไปคือ สร้างสาขา สำหรับการแก้ไขข้อผิดพลาดเพียงครั้งเดียว สิ่งนี้เป็นจริงแม้ว่าจะเกี่ยวข้องกับผู้เขียนเพียงคนเดียวที่ทำการเปลี่ยนแปลงบรรทัดเดียวในไฟล์เดียว
ด้วยเหตุผลเหล่านี้ การสร้างและการลบสาขาจึงเป็นการดำเนินการที่ต้องเข้าใจเป็นอย่างดี คุณอาจพบว่าตัวเองมักจะลบสาขาระหว่างเวิร์กโฟลว์การพัฒนาทั่วไป
ที่เก็บตัวอย่างพร้อมสาขา
ตัวอย่างต่อไปนี้อ้างถึงที่เก็บตัวอย่างที่มีโครงสร้างดังต่อไปนี้:
$ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit
โปรดทราบว่าแต่ละสาขาในพื้นที่มีสาขาต้นน้ำที่สอดคล้องกันจากรีโมต: ต้นทาง .
การลบสาขาโดยใช้ Command Line
ไวยากรณ์คำสั่งพื้นฐานสำหรับการลบสาขาคือ:
git branch (-d | -D) [-r] ...
รูปแบบที่ง่ายที่สุดของคำสั่งจะลบสาขาในพื้นที่ หากรวมการเปลี่ยนแปลงทั้งหมดเข้าด้วยกัน:
$ git branch -d dev
คุณไม่สามารถลบสาขาที่กำลังใช้งานอยู่ได้ หากคุณพยายามทำ คุณจะได้รับข้อความดังนี้:
error: Cannot delete branch 'main' checked out at '/tmp/sandbox'
เมื่อทุกอย่างเรียบร้อย คุณจะเห็นข้อความยืนยัน:
Deleted branch dev (was 1ae41e8).
หากคุณลบสาขาที่มีอยู่เฉพาะในเครื่อง โดยไม่ได้รวมการเปลี่ยนแปลง คุณจะสูญเสียการเปลี่ยนแปลงเหล่านั้น ดังนั้น git จะปฏิเสธที่จะลบสาขาในสถานการณ์ดังกล่าว โดยค่าเริ่มต้น:
error: The branch ‘dev’ is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev’.
เมื่อข้อความแสดงข้อผิดพลาดแจ้ง คุณสามารถบังคับให้ลบด้วยปุ่ม -NS ธง. อย่างไรก็ตาม git จะอนุญาตให้คุณลบสาขาในพื้นที่ที่ยังไม่ได้รวมหากมีอยู่ในระยะไกล:
warning: deleting branch ‘dev’ that has been merged to
'refs/remotes/origin/dev’, but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).
การลบสาขาระยะไกลนั้นค่อนข้างแตกต่าง คุณจะใช้ git push คำสั่งพร้อมกับ -NS ตั้งค่าสถานะที่จะลบ หลังจากนั้นให้ระบุชื่อของรีโมท (มักจะ ต้นทาง ) และชื่อสาขา:
$ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev
การลบสาขาในพื้นที่และระยะไกลด้วย GitHub Desktop
ต่างจากโปรแกรมคอมไพล์บรรทัดคำสั่ง แอปเดสก์ท็อปของ GitHub จะให้คุณลบสาขาที่ใช้งานอยู่เท่านั้น คุณสามารถดำเนินการนี้ผ่านทาง สาขา เมนูโดยเลือก ลบ ตัวเลือกและยืนยัน:
GitHub Desktop จะไม่อนุญาตให้คุณลบสาขาเริ่มต้น—เช่น main—แม้ว่า git เองจะรองรับสิ่งนี้ หากสาขาเริ่มต้นเป็นสาขาที่ใช้งานอยู่ในปัจจุบัน แอปจะปิดใช้งานการทำงานของเมนู
หากสาขาเป็นตัวแทนของสาขาระยะไกล GitHub Desktop จะมีตัวเลือกในการลบออกจากรีโมตด้วย:
การลบสาขาโดยใช้ GitKraken
GitCrack แสดงสาขาในพื้นที่และระยะไกลของที่เก็บของคุณในแถบด้านข้างทางซ้ายมือ คุณต้องลบแต่ละรายการแยกกัน.
วางเมาส์เหนือชื่อสาขาที่ต้องการแล้วคลิก สาขา เมนูการทำงานที่ดูเหมือนจุดแนวตั้งสามจุด จากเมนู ให้เลือก ลบ :
คุณจะเห็นข้อความยืนยันที่แจ้งว่านี่เป็นการดำเนินการที่ทำลายล้าง คุณสามารถยืนยันได้ว่าต้องการดำเนินการต่อด้วยปุ่ม ลบ ปุ่ม:
สะท้อนพฤติกรรมเริ่มต้นของโปรแกรมบรรทัดคำสั่ง git คุณต้องเปลี่ยนไปใช้สาขาอื่นที่ไม่ใช่สาขาที่คุณกำลังลบ. มิฉะนั้น คุณจะเห็นข้อความแสดงข้อผิดพลาด:
การลบสาขาในพื้นที่และระยะไกลโดยใช้ Tower
การลบสาขาด้วย ทาวเวอร์ คล้ายกับการลบสาขาด้วย GitKraken สาขาในพื้นที่และระยะไกลจะแสดงในแผงทางด้านซ้ายมือ คลิกขวาที่สาขาใดก็ได้แล้วเลือกตัวเลือกลบจากเมนูบริบท:
ข้อแตกต่างที่สำคัญประการหนึ่งคือสามารถลบสาขาระยะไกลพร้อมกับสาขาในพื้นที่ ระหว่างการยืนยัน:
การลบสาขาบน GitHub
GitHub ทำหน้าที่เป็นแหล่งข้อมูลระยะไกลเท่านั้น ดังนั้นสาขาต่างๆ จึงมีรีโมตตามค่าเริ่มต้น หากคุณลบสาขาโดยใช้เว็บไซต์ GitHub คุณจะต้องลบสาขาในพื้นที่ที่เกี่ยวข้องโดยใช้วิธีอื่นที่นี่
เช่นเดียวกับแอป GitHub Desktop เว็บไซต์ GitHub จะไม่อนุญาตให้คุณลบสาขาเริ่มต้น ตัวเลือกก็ไม่ปรากฏขึ้น การลบสาขานั้นตรงไปตรงมา จากที่เก็บของ รหัส หน้า คลิก สาขา ลิงค์ ค้นหาสาขาที่จะลบ จากนั้นคลิกที่ ลบสาขานี้ ไอคอนซึ่งดูเหมือนถังขยะ:
โปรดทราบว่าไม่มีการตรวจสอบการเปลี่ยนแปลงที่ยังไม่ได้รวม ดังนั้นใน GitHub สาขาจะถูกลบทันที อย่างไรก็ตาม เนื่องจากจะเป็นตัวแทนของสาขาระยะไกลเสมอ นี่ควรเป็นพฤติกรรมที่คุณคาดหวัง
โปรดทราบว่าหลังจากลบแล้ว คุณจะเห็นปุ่มเพื่อ คืนค่า สาขา. อย่างไรก็ตาม นี่เป็นเพียงคุณลักษณะการเลิกทำที่มีประโยชน์ ในกรณีที่คุณคลิกไอคอนลบโดยไม่ได้ตั้งใจ อย่าพึ่งเชื่อเพราะทันทีที่คุณรีเฟรชหรือออกจากหน้า คุณจะสูญเสียตัวเลือกนี้ไป!
การลบสาขาในพื้นที่และระยะไกลบน Bitbucket
Bitbucket เช่น GitHub จะไม่อนุญาตให้คุณลบสาขาเริ่มต้น Bitbucket เรียกสิ่งนี้ว่า สาขาหลัก ใน การตั้งค่าพื้นที่เก็บข้อมูล . คุณสามารถลบสาขาอื่น ๆ ที่ระบุไว้ใน สาขา แท็บผ่านทางที่เกี่ยวข้อง การกระทำ เมนู:
คุณยังสามารถลบสาขาได้มากกว่าหนึ่งสาขาในครั้งเดียว หากคุณกำลังดำเนินการล้างข้อมูลครั้งใหญ่:
การลบสาขาเป็นส่วนหนึ่งของเวิร์กโฟลว์ Git ทั่วไป
สาขา Git สามารถทำให้เวิร์กโฟลว์ของคุณซับซ้อน โดยเฉพาะอย่างยิ่งกับสาขาในพื้นที่ ระยะไกล และการติดตาม แต่สำหรับการพัฒนาแบบง่ายๆ ในแต่ละวัน คุณมักจะสร้างและลบสาขาในพื้นที่อยู่ตลอดเวลา นี่เป็นลักษณะสำคัญของเวิร์กโฟลว์ git ทั่วไปที่คุณควรคุ้นเคย
แบ่งปัน แบ่งปัน ทวีต อีเมล วิธีใช้ Git Branches เพื่อจัดโครงสร้างโครงการการเขียนโปรแกรมของคุณในบทความนี้ เราจะมาดูกันว่าการโยงโค้ดของคุณหมายถึงอะไร ทำอย่างไร และวิธีจัดการการอัปเดตของ 'git branch หลัก'
อ่านต่อไป หัวข้อที่เกี่ยวข้อง- การเขียนโปรแกรม
- GitHub
Bobby เป็นผู้ที่ชื่นชอบเทคโนโลยีซึ่งทำงานเป็นนักพัฒนาซอฟต์แวร์มาเกือบสองทศวรรษ เขาหลงใหลในการเล่นเกม ทำงานเป็นบรรณาธิการบทวิจารณ์ที่ Switch Player Magazine และหมกมุ่นอยู่กับทุกแง่มุมของการเผยแพร่ออนไลน์และการพัฒนาเว็บ
เพิ่มเติมจาก Bobby Jackสมัครรับจดหมายข่าวของเรา
เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!
คลิกที่นี่เพื่อสมัครสมาชิก