ฉันได้สร้างสาขามากมายในที่เก็บของเรา สาขาเหล่านั้นมีไว้สำหรับการทดสอบก่อนที่จะถูกดึงไปยังต้นแบบ ตอนนี้ฉันเห็นมันมากมายในรายการและพวกเขาจะไม่ใช้มันอีก จะลบสาขาเหล่านั้นไปยัง Bitbucket โดยตรงได้อย่างไร?
ฉันได้สร้างสาขามากมายในที่เก็บของเรา สาขาเหล่านั้นมีไว้สำหรับการทดสอบก่อนที่จะถูกดึงไปยังต้นแบบ ตอนนี้ฉันเห็นมันมากมายในรายการและพวกเขาจะไม่ใช้มันอีก จะลบสาขาเหล่านั้นไปยัง Bitbucket โดยตรงได้อย่างไร?
คำตอบ:
หากสาขาเป็นเฉพาะในพื้นที่คุณสามารถใช้-dหากสาขานั้นถูกรวมเข้าด้วยกันเช่น
git branch -d branch-name
หากสาขามีรหัสที่คุณไม่เคยวางแผนที่จะรวมให้ใช้-Dแทน
หากสาขาอยู่ใน repo ต้นน้ำ (บน Bitbucket) คุณสามารถลบการอ้างอิงระยะไกลโดย
git push origin :branch-name
นอกจากนี้หากคุณอยู่บนเว็บไซต์ Bitbucket คุณสามารถลบสาขาที่คุณผลักดันได้โดยไปที่แท็บสาขาคุณลักษณะภายใต้Commitsบนไซต์ คุณจะพบไอคอนจุดไข่ปลา คลิกที่แล้วเลือกสาขาลบ ต้องแน่ใจว่าคุณต้องการยกเลิกการเปลี่ยนแปลงทั้งหมดที่นั่น!
สำหรับการลบสาขาออกจาก Bitbucket
นอกจากคำตอบที่ได้รับจาก @Marcus แล้วคุณยังสามารถลบสาขาระยะไกลผ่านทาง:
git push [remote-name] --delete [branch-name]
ในBitbucketไปที่สาขาในเมนูด้านซ้ายมือ
ฉันสามารถลบสาขาส่วนใหญ่ของฉันได้ แต่มีสาขาหนึ่งเป็นแบบนี้และฉันไม่สามารถลบได้:
กลับกลายเป็นคนที่ได้ตั้งBranch permissions
ภายใต้และจากที่นั่นไม่ได้ตรวจสอบSettings
Allow deleting this branch
หวังว่านี่จะช่วยใครบางคนได้
อัปเดต : การตั้งค่าอยู่ที่ใดจากคำถามในความคิดเห็น ป้อนที่เก็บที่คุณไม่ต้องการแก้ไขเพื่อรับเมนู คุณอาจต้องมีสิทธิ์ของผู้ดูแลระบบเพื่อเปลี่ยนแปลงสิ่งนี้
หากคุณใช้ pycharm IDE สำหรับการพัฒนาและคุณได้เพิ่ม Git เข้าไปแล้ว คุณสามารถลบสาขาระยะไกลจาก pycharm ได้โดยตรง จาก VCS แถบเครื่องมือ -> Git -> สาขา -> เลือกสาขา -> และลบ มันจะลบออกจากเซิร์ฟเวอร์ git ระยะไกล
ฉันได้เขียนสคริปต์เล็ก ๆ นี้เมื่อจำนวนสาขาใน repo ของฉันเกินหลายร้อย ฉันไม่รู้เกี่ยวกับวิธีการอื่น ๆ (กับ CLI) ดังนั้นฉันจึงตัดสินใจใช้ซีลีเนียมโดยอัตโนมัติ เพียงแค่เปิดเว็บไซต์ Bitbucket ไปที่ Branches เลื่อนหน้าลงไปจนสุดแล้วคลิกที่เมนูตัวเลือกสาขาทั้งหมด -> คลิกปุ่มลบ -> คลิกใช่ สามารถปรับแต่งให้คงสาขา N (100 - ค่าเริ่มต้น) สุดท้ายและข้ามสาขาที่มีชื่อเฉพาะได้ (master, develop - default, อาจมากกว่านี้) หากสิ่งนี้เหมาะกับคุณคุณสามารถลองวิธีนั้นได้
https://github.com/globad/remove-old-branches
สิ่งที่คุณต้องมีคือโคลนที่เก็บดาวน์โหลด Chrome-webdriver เวอร์ชันที่เหมาะสมป้อนค่าคงที่ไม่กี่อย่างเช่น URL ไปยังที่เก็บของคุณและเรียกใช้สคริปต์
รหัสง่ายพอที่จะเข้าใจ หากคุณมีคำถามใด ๆ โปรดเขียนความคิดเห็น / สร้างปัญหา
ลองใช้คำสั่งนี้มันจะล้างสาขาทั้งหมดที่รวมเข้ากับdevelop
สาขา
for i in `git branch -r --merged origin/develop| grep origin | grep -v '>' \
| grep -v master | grep -v develop | sed -E "s|^ *origin/||g"`; \
do \
git push origin $i --delete; \
done
ในAndroid Studioตัวเลือกจะอยู่ที่มุมขวาของ IDE:
หากคุณชอบความสนุกสนานคุณสามารถไปที่หน้ารายชื่อสาขาของคุณ (เช่นรวม) และเรียกใช้ในคอนโซลจาวาสคริปต์:
document.querySelectorAll('tr td div a:first-child').forEach(function(item) { fetch('https://bitbucket.org/snippets/new?owner=<yourprofilenick>', {'credentials': 'same-origin'}).then((response) => {return response.text()}).then(function(string) { return /'csrfmiddlewaretoken' value='(.*)'/g.exec(string)[1] }).then(function(csrf) { if (!~item.innerText.indexOf('/')) return;
fetch(`https://bitbucket.org/!api/2.0/repositories/<your_organization_path>/refs/branches/${item.innerText}`, {headers: {"x-csrftoken": csrf}, credentials: "same-origin", method: 'DELETE'}).then(() => console.log(`${item.innerText} DELETED!`)) }) })
<yourprofilenick>
ด้วย BitBucket nick ของคุณ<your_organization_path>
ด้วยเส้นทางองค์กรของคุณก่อนอื่นเราต้องมีเพจที่มีโทเค็น CSRF ในแหล่งที่มาของเพจดังนั้นฉันจึงเลือก:
https://bitbucket.org/snippets/new?owner=<yourprofilenick>
จากนั้นสำหรับแต่ละสาขา (ในรายชื่อสาขา) จะได้รับโทเค็น CSRF และลบสาขานั้น
อย่าลืมป้องกันสาขาที่ละเอียดอ่อนก่อนที่จะลบในการตั้งค่า repo
จะไม่ลบสาขาหลัก
คุณต้องเข้าสู่ระบบ
จะลบเฉพาะสาขาที่มองเห็นได้ในหน้านั้น (ดังนั้นหากต้องการลบสาขาที่เหลือคุณต้องไปที่หน้าถัดไป)