ใน VSCode หลังจากที่ฉันส่งคำขอดึงและลบสาขาบน GitHub สาขานั้นยังคงปรากฏใน Visual Studio Code หากฉันเลือกสาขามันจะให้ Error ตามที่คาดไว้
ฉันจะลบสาขาที่ถูกลบออกจาก VSCode ได้อย่างไร - ฉันสามารถทำได้โดยอัตโนมัติหรือไม่
ใน VSCode หลังจากที่ฉันส่งคำขอดึงและลบสาขาบน GitHub สาขานั้นยังคงปรากฏใน Visual Studio Code หากฉันเลือกสาขามันจะให้ Error ตามที่คาดไว้
ฉันจะลบสาขาที่ถูกลบออกจาก VSCode ได้อย่างไร - ฉันสามารถทำได้โดยอัตโนมัติหรือไม่
คำตอบ:
เห็นได้ชัดว่าคุณลักษณะนี้เป็นไปโดยเจตนา ฉันพบว่าวิธีที่ถูกต้องในการลบสาขาระยะไกลทั้งหมดที่ถูกลบออกจาก Github คือการรันคำสั่งต่อไปนี้
git fetch --prune
จากนั้นรีสตาร์ท Visual Studio เพื่อลบกิ่งก้านออกจากจานคำสั่ง
origin/branch_nameจากเมนูคอมไพล์สวิตช์ด่วนบน VSCode ตัวอย่างเช่นหากคุณมีสาขาในท้องถิ่นtestและส่งไปยัง Github มีสองสาขาtestและorigin/testในเมนูสาขาคอมไพล์พรุนจะลบเฉพาะorigin/testสาขาเท่านั้นไม่ใช่testสาขา
git branchหรือคลิกที่ชื่อสาขาเพื่อดูรายการแบบเลื่อนลงของสาขาที่มีทั้งหมด
git branchแสดงรายการเฉพาะสาขาภายในคำสั่งนี้ควรจะลบremotes/branch_nameสาขา ลองgit branch -aดูทุกอย่าง
คุณสามารถลบสาขาในพื้นที่ออกจาก Visual Studio Code ได้โดยเปิด Command Pallete (Ctrl-Shift-P) จากนั้นเลือกGit: Delete Branch ...จากนั้นคุณสามารถลบสาขาภายในเครื่องได้โดยเลือกรายการที่เหมาะสมจากรายการ
สาขาที่ถูกลบออกจาก GitHub นั้นดี ... เพิ่งถูกลบออกจาก GitHub คุณยังมีสำเนาสาขาในเครื่องในเครื่องของคุณ git branch -d the_local_branchในการลบวิ่งสาขาในประเทศ ไม่มีคำสั่งใน VS Code ให้ทำ แต่คุณสามารถเริ่มเทอร์มินัลใน VSCode โดยใช้View: Toggle Integrated Terminalคำสั่งและเรียกใช้คำสั่งจากมัน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการสาขาโปรดไปที่เอกสาร git - https://git-scm.com/book/be/v2/Git-Branching-Branch-Management
ฉันตีความคำถามว่าเป็น: ฉันจะลบสาขาในพื้นที่ของฉันที่ถูกรวมเข้าด้วยกันได้อย่างไรเนื่องจากฉันใช้ Git Fetch (พรุน) จากจานคำสั่ง นี่อาจถือเป็นการ "แฮ็ก" แต่เป็นสิ่งที่ฉันใช้ ในเทอร์มินัล PowerShell:
$branches = (git branch --merged).replace(" ", "").replace("*", "") | ? { $_ -ne "develop" -and $_ -ne "master" }
foreach ($branch in $branches) { git branch $branch -d }
ในกรณีที่คุณไม่คุ้นเคยกับ PoSH นี่คือสิ่งที่ทำ: บรรทัดแรกได้รับชื่อของสาขาที่ผสานทั้งหมด (ยกเว้นการพัฒนาและหลัก) และบรรทัดที่สองจะวนผ่านรายการนั้นและเรียกใช้ "git branch -d ". ตราบใดที่รวมสาขาอย่างสมบูรณ์คุณควรเห็น:
Deleted branch <branch name> (was <commit ID>).
สำหรับแต่ละสาขา บางครั้งฉันจะเข้าไปในสาขาที่ไม่สามารถลบได้ - หากเกิดเหตุการณ์นี้ขึ้นและคุณแน่ใจว่าจะถูกลบอย่างปลอดภัย (เช่นคุณจะไม่สูญเสียงานในเครื่องที่ไม่ได้จัดเก็บไว้) คุณสามารถเรียกใช้:
git branch <branch name> -D
สังเกตตัวพิมพ์ใหญ่ D - ที่บังคับให้ลบสาขาในพื้นที่
simple | complexหาร😉
สิ่งที่คุณต้องทำคือรันคำสั่งนี้:
git remote prune origin
สิ่งพิเศษที่คุณสามารถทำได้เพราะบางครั้งมันน่ารำคาญในการเปิดเทอร์มินัลเพื่อสิ่งนั้น .. คุณสามารถเพิ่มงานใน vscode ได้
โดยทำตามขั้นตอนต่อไปนี้:
{"label": "Git Prune", "type": "shell", "command": "git remote prune origin", "problemMatcher": []}
วิธีใช้:
อ้างอิง:
git remote prune originแตกต่างจากคำตอบที่ยอมรับของgit fetch --prune? รายละเอียด Run Task ดีมากขอบคุณสำหรับการโพสต์
คุณสามารถลบสาขาท้องถิ่นทั้งหมด (ยกเว้นมาสเตอร์) ด้วย:
git branch -r | grep -v "master" | xargs git branch -D
และคุณสามารถลบสาขาทั้งหมดที่ยังคงปรากฏเป็น origin/XXXXใน VSCode แต่ถูกลบไปแล้วoriginด้วย:
git fetch --prune
บันทึก:
คำสั่งแรกด้านบน (นำมาจากhttps://stackoverflow.com/a/52006270/3120163 ):
ฉันพบวิธีแก้ไขปัญหานี้ ดังนั้นคุณต้องลบรีโมตที่ลิงก์ไปยัง Github repo จากนั้นเพิ่มรีโมตอีกครั้ง
สาขาทั้งหมดที่ถูกลบออกจาก Github จะไม่ปรากฏใน vscode อีกต่อไป สมมติว่าoriginเป็นชื่อสำหรับ repo ระยะไกล
git remote remove origin
แล้ว
git remote add origin git@github.com:your-username/repo-name.git
คำสั่งที่สั้นกว่าคือ:
git fetch -p
คุณไม่จำเป็นต้องgit fetch --pruneรีสตาร์ท VSCode อีกต่อไป
ด้วย VSCode 1.52 (พฤศจิกายน 2020) ตอนนี้คุณมี:
Git: พรุนเมื่อดึงข้อมูล
การเปิดใช้การ
git.pruneOnFetchตั้งค่าจะทำให้ VS Code ทำงานgit fetch --pruneเมื่อดึงข้อมูลอ้างอิงระยะไกล
ไม่มีสาขาพิเศษในเครื่องอีกต่อไปเมื่อถูกลบออกจาก GitHub
ดูPR 89249 การแก้ไขปัญหา 86813 :
การใช้งาน:
{ "git.pruneOnFetch": true }การตั้งค่าเป็น
falseค่าเริ่มต้นสิ่งนี้จะเพิ่ม
--pruneแฟล็กในการดึงข้อมูลคอมไพล์ทั้งหมด
git fetch --pruneการอัปเดต / ลบการอ้างอิงสาขาระยะไกลและgit branch -d <branch-name>การลบสาขาในพื้นที่ (-Dเพื่อบังคับ) รีสตาร์ท VSCode รีเฟรชจานสี