จะปิดสาขา Git ได้อย่างไร?


112

ดังนั้นฉันจึงเริ่มใช้ Git + GitHub

ในทีมงานเล็ก ๆ น้อย ๆ ของเราสมาชิกแต่ละคนกำลังสร้างสาขาของตนเองสำหรับแต่ละประเด็น / ข้อกำหนดที่ได้รับการจัดสรร

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

ในขณะนี้code code, commit, code, commitฯลฯ ...

แล้วpull request, code-fixup, commit, code, commit.. ฯลฯ

และสุดท้าย ... ยอมรับคำขอดึงแล้ว

ว๊อท.

แต่.. แล้วไง? (...... เปิ่น ...... )

บุคคลที่สร้างสาขาบนเครื่อง dev ในพื้นที่จำเป็นต้อง .. ปิดสาขาหรือไม่? ข้อเสนอแนะคือให้ผู้พัฒนาลบสาขา `(... -D ... ) จากนั้นทำการดึง / รีเฟรชต้นแบบ .. ซึ่งจะได้รับรหัสสาขาทั้งหมด

ไม่แน่ใจ - ช่วยด้วย :)


16
สาขาใน Git เป็นเพียงป้ายกำกับบนคอมมิตที่เฉพาะเจาะจงดังนั้นโดยพื้นฐานแล้วหากคุณไม่ต้องการอีกต่อไปให้ลบ "สาขา" นั้น ("ป้ายกำกับ" นั้นบนคอมมิตนั้น) ในเครื่องเพียงแค่ทำgit branch Issue#1 -dและนั่นคือทั้งหมดที่มี - รหัสไม่สูญหายเพียงแค่ป้ายกำกับถูกลบออกจากที่เก็บของคุณ
marc_s

1
@marc_s ฉันขอแนะนำให้ทำคำตอบออกมา :)
KingCrunch

@marc_s - คุณกำลังบอกว่าการปฏิบัติมาตรฐานเมื่อคุณได้ปรับสาขาของคุณแล้ว .. และสาขาถูกผลักไป .. เราลบมันหรือไม่? แล้วการรวม?
Pure.Krome

@ Pure.Krome อย่างน้อยฉันก็คิดว่าการ "ดึงคำขอได้รับการยอมรับ" คุณหมายความว่ามีการรวมเข้าด้วยกันแล้ว ใช่แน่นอนรวมการเปลี่ยนแปลงเข้าmasterด้วยdevelopกันหรือสาขาการพัฒนาของคุณชื่ออะไร (ผสาน, Rebase (มี / ไม่มีสควอช), ... )
KingCrunch

เมื่อฉันพูดว่า 'ยอมรับคำขอดึงแล้ว' .. ซึ่งเกิดขึ้นที่อื่น (กล่าวคือผู้พัฒนาที่รับผิดชอบซึ่งเป็นผู้อนุมัติรหัสทั้งหมดที่เป็น PR ... ) ฉันสงสัยว่าฉันควรเปลี่ยนไปใช้ต้นแบบบนเครื่อง dev ในพื้นที่ของฉันหรือไม่และทำการผสานด้วย
Pure.Krome

คำตอบ:


181

เราขอให้ผู้พัฒนาขอสถานะคำขอดึงที่ต้องการให้ลบสาขา ส่วนใหญ่เป็นกรณีนี้ มีหลายครั้งที่จำเป็นต้องมีสาขา (เช่นการคัดลอกการเปลี่ยนแปลงไปยังสาขาเผยแพร่อื่น)

นิ้วของฉันจดจำกระบวนการของเราได้:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

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


8
เราได้ทำการเปลี่ยนแปลงขั้นตอนล่าสุดของเรา ใช้งานgit push --tagsหนักและดาวน์โหลดแท็กทั้งหมด ทำให้ยากที่จะมีแท็กท้องถิ่นของคุณเอง แต่เราใช้git push origin branch-<feature-branch>เพื่อพุชแท็กเดียว
Bill Door

ดังนั้นบรรทัดสุดท้ายอย่าลืมใช้ชื่อแท็กสำหรับสาขาฟีเจอร์ซึ่งก่อนหน้านี้เราตั้งค่าเป็น "branch- <feature-branch>" ไม่ใช่แค่ <feature-branch> แก้ไข?
Premier Bromanov

@PremierBromanov บรรทัดสุดท้ายสำหรับลบสาขาระยะไกล สำหรับจำแท็ก @BillDoor git push --tagsได้ใช้
Deivide

คริปสุด ๆ !!
Kike Gamboa

41

git push origin :branchnameใช่เพียงแค่ลบสาขาโดยใช้ หากต้องการแก้ไขปัญหาใหม่ในภายหลังให้แยกสาขาออกจากต้นแบบอีกครั้ง


3
ซึ่งจะลบสาขาระยะไกลไม่ใช่สาขาภายใน
KingCrunch

5
ฉันไม่รู้ว่าทำไมมันถึงถูกปรับที่ -2 นี่คือคำตอบที่ถูกต้อง แน่นอนพวกเขามีสาขาที่ห่างไกลพวกเขาจะออก PR ต่อต้านมันได้อย่างไร?
Ana Betts

หากคุณทำสิ่งนี้แล้วทำการดึงคอมไพล์มันจะไม่ลบสาขาในพื้นที่ของคุณด้วยหรือไม่? (แก้ไข: nm ฉันเห็นว่ามันไม่ชัดเจนเว้นแต่คุณจะเรียกใช้ git remote prune)
Tim Keating

1
เกิดอะไรขึ้นกับประวัติสาขา?
geoidesic

40

หลังจากกรอกรหัสครั้งแรกผสานสาขาเพื่อหลักจากนั้นลบสาขานั้น

git checkout master
git merge <branch-name>
git branch -d <branch-name>

และนี่คือเครื่อง dev ของฉันเองใช่ไหม บุคคลหลักที่รับรหัสใหม่.. เครื่องของเขาอยู่ที่อื่น
Pure.Krome

2
หากมีคนอื่นทำการผสานเขาจะมีตัวชี้สาขาของคุณในรีโมตแยกต่างหากโดยปกติเช่นผู้ส่ง / ชื่อสาขา เขาจะต้องใช้git remote prune senderเพื่อกำจัดมันหลังจากที่คุณทำ - แม้ว่าในกรณีส่วนใหญ่เขาไม่จำเป็นต้องดูแล
jørgensen

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