ฉันควรลบสาขาหลังจากรวมสาขาหรือไม่


94

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

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

โดยปกติจะจัดการอย่างไร?

คำตอบ:


73

ไม่มีปัญหาในการลบสาขาที่รวมเข้าด้วยกันการคอมมิตทั้งหมดยังมีอยู่ในประวัติและแม้กระทั่งในอินเทอร์เฟซ GitHub ก็จะยังคงปรากฏอยู่ (ดูเช่นPR นี้ซึ่งหมายถึงส้อมที่ฉัน ลบหลังจากที่ PR ได้รับการยอมรับ)


คุณบอกว่าการกระทำทั้งหมดยังคงมีอยู่ในประวัติศาสตร์ หากฉันดูโครงการบน github.com ฉันพบว่าเป็นเรื่องจริง อย่างไรก็ตามในแอป Github บนเดสก์ท็อปสำหรับ Mac ดูเหมือนว่าคุณจะไม่เห็นประวัติการคอมมิตสำหรับสาขาที่ผสานอีกต่อไป ฉันเข้าใจผิดหรือเปล่า?
peacetype

ฉันขอเสริมว่าหากคุณไม่ได้ใช้ไคลเอนต์ git โดยเฉพาะอย่างยิ่งไม่ได้ใช้กับ gui การมีสาขาจะเป็นประโยชน์ในการทำความเข้าใจบันทึกของคุณให้ดี นั่นคือเนื่องจากคุณไม่มี github / gitlab / gui อื่น ๆ ให้ดูการเก็บชื่อสาขาช่วยให้คุณมีสถานที่ที่เรียบง่ายในการอ้างอิงประวัตินอกเหนือจากประวัติการกระทำซึ่งจะหายไปโดยการลบสาขา มีใครบางคนโปรดแจ้งให้เราทราบหากข้อความสุดท้ายนี้ผิด
Raj

@Raj คุณมีสิ่งนั้นอยู่แล้วในรูปแบบของMerge branch fix-foo-barการส่งข้อความ ลองแล้ววางเบรกของคุณเองน่าสนใจผ่านทางgit log --grep="Merge branch" git checkout -b curious-changeนอกจากนี้จะไม่มีสิ่งใดสูญหายเมื่อลบสาขา - ยกเว้นตัวชี้ "รำชื่อ→คอมมิตแฮช" เท่านั้น (ซึ่งจริงๆแล้วสาขาคืออะไรไม่สำคัญว่าในเครื่องหรือระยะไกล)
ulidtko

1
@ fred-foo คำถามหากเป็นการปฏิบัติที่ดีจะไม่มีคำตอบ (ฉันมีคำถามเดียวกัน)
Esger

27

ฉันทำความสะอาดสาขาของฉันอย่างแน่นอนหลังจากรวมเข้าด้วยกัน

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

ข้างต้นใช้กับ BitBucket และ GitHub ด้วย

เหตุผลเดียวที่คุณอาจมีในการไม่ลบการโพสต์การผสานสาขาคือเพื่อให้คุณทราบว่าคุณลักษณะที่กำหนดสิ้นสุดลงที่ใด แต่การรวมคอมมิต (และgit merge --no-ffถ้าคุณต้องการจริงๆ) ทำให้สิ่งนั้นไม่เกี่ยวข้อง


3
เห็นได้ชัดว่าGitHub ทำเสมอ - no-ffดังนั้นเราจะไม่สูญเสียความจริงที่ว่านี่เป็นสาขาแม้ในสถานการณ์เหล่านั้น
joeytwiddle

7
@joeytwiddle: สมมติว่าคุณใช้อินเทอร์เฟซของ GitHub เพื่อรวมสาขาใช่!
Asherah

1

เพียง แต่ดูแล
ทั้งหมดเชื่อมโยงหลายมิติ URL ที่อ้างอิงของสาขาถูกลบของคุณจะได้รับการBROKEN

ตัวอย่างเช่น
ถ้าคุณลบbranch_feature_xสาขาออกจาก repo ของคุณ
URL ของไฮเปอร์ลิงก์ที่เกี่ยวข้องของสาขานี้จะเสีย
https://github.com/username/project/tree/branch_feature_x


0

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

FYI: โดยปกติแล้วเราจะรวมสาขาเป็นหลักผ่านอินเทอร์เฟซ bitbucket คุณสามารถตั้งค่าdelete feature branch after mergeสถานะได้ที่นั่น

หากคุณต้องการที่จะจัดการกับสาขาเก่าเกินไปคุณอาจมีลักษณะสาธารณูปโภคบางอย่างเช่นนี้

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