ใน 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 รีเฟรชจานสี