ฉันจะลบ Git ของฉันทั้งหมดพร้อมกันได้อย่างไร


1406

ฉันจะลบGitของฉันทั้งหมดพร้อมกันได้อย่างไร

ฉันหมายถึงเฉพาะเจาะจงด้วยการพิมพ์คำสั่งเดียว

คำตอบ:


2461

คำสั่งต่อไปนี้จะลบการหยุดของคุณทั้งหมด:

git stash clear

จากเอกสาร git :

clear

ลบสถานะที่เก็บไว้ทั้งหมด

คำเตือนที่สำคัญ: จากนั้นรัฐเหล่านั้นจะถูกตัดแต่งกิ่งและอาจเป็นไปไม่ได้ที่จะกู้คืน (... )


13
ทำไมไม่คอมไพล์ stash drop?
user20358

137
@ user20358: เพราะstash drop(" นำรัฐ stashed เดียวจากรายการสะสมเมื่อไม่มี <สะสม> จะได้รับมันเอาคนล่าสุด ( ... ).. ') ไม่ตอบคำถาม (' ฉันจะลบทั้งหมดของ Git ของฉันหยุดทำงานทันทีหรือไม่ ")?
Tadeck

11
นอกจากคำตอบที่ยอมรับแล้ว - git stash clearเพื่อยืนยันว่าถูกลบทั้งหมดให้ใช้ -git stash list
kamal

2
@ jedd.ahyoung สิ่งนี้ควรมีผู้ติดตามอีก 1,000 คน เอกสารสำหรับgitเป็นไปไม่ได้ที่จะหา! git-scm.com/docs/git-stash
Drenai

11
@ Ryan: git help <command>เป็นวิธีที่ดีที่สุดในการรับเอกสาร (และจริง ๆ แล้วมันค่อนข้างดี) ในกรณีนี้git help stashแสดงให้เห็นชัดเจนว่าgit stash clearเป็นการกระทำ (นี่ไม่ได้หยุดฉันจากการมาถึงก่อนและถอนคำตอบ ... แต่นั่นบอกคุณเกี่ยวกับฉันมากกว่าgit: D)
Marco Massenzio

46

มีสองวิธีในการลบที่ซ่อน:

  1. $ git stash drop <stash_id>หากคุณไม่จำเป็นต้องซ่อนโดยเฉพาะอย่างยิ่งคุณสามารถลบได้ด้วย:
  2. คุณสามารถลบทั้งหมดของ stashes ของคุณจาก repo $ git stash clearกับ:

ใช้ทั้งคู่ด้วยความระมัดระวังอาจเป็นเรื่องยากที่จะคืนค่าการเก็บข้อมูลที่ถูกลบครั้งเดียว

นี่คือบทความอ้างอิง


2
การปิดเทอร์มินัลไม่มีส่วนเกี่ยวข้องกับมัน git ไม่ใช่ภูต มันจะทำงานเฉพาะเมื่อคุณเรียกว่า ไม่ทราบว่าคุณปิดเทอร์มินัล
DylanYoung

31

คำสั่งนี้ช่วยให้คุณสามารถดูการเปลี่ยนแปลงที่เก็บไว้ทั้งหมด

git stash list

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

git stash clear

ตอนนี้หากคุณต้องการลบการเปลี่ยนแปลงที่เก็บไว้อย่างใดอย่างหนึ่งจากพื้นที่เก็บ

git stash drop stash@{index}   // here index will be shown after getting stash list.

หมายเหตุ: git stash listช่วยให้คุณรับดัชนีจากพื้นที่ซ่อนของ git


เป็นมูลค่าการกล่าวขวัญว่าอย่างน้อยสำหรับเทอร์มินัลรวมใน VSCode โดยใช้ Windows 10 มันเป็นgit stash drop 'stash@{index}'ด้วยเครื่องหมายอะโพสโทรฟี
Oriol Miró

13

ฉันต้องการเก็บ stash ล่าสุดบางอย่าง แต่ลบทุกอย่างอื่น

เนื่องจากการหยุดทั้งหมดได้รับการกำหนดหมายเลขใหม่เมื่อคุณดรอปใหม่นี่จึงเป็นเรื่องง่ายที่จะทำ หากต้องการลบการซ่อนทั้งหมดที่เก่ากว่า stash @ {19}:

while git stash drop 'stash@{20}'; do true; done

สิ่งนี้นำไปใช้กับค่าที่จัดทำดัชนีใน Git 2.11 ซึ่งคุณสามารถอ้างถึงการสะสมครั้งที่ 3 จากรายการการซ่อนที่ใช้git stash pop 3แทนได้หรือไม่? ฉันต้องการทราบว่าเราสามารถใช้การwhileวนซ้ำและการหยุดชั่วคราวโดยใช้ค่าดัชนี
tom_mai78101

ฉันชอบความเรียบง่ายของโซลูชั่นที่สง่างามนี้!
โดมินิก

3

ฉันมีข้อกำหนดอื่นเช่นต้องมีการลบ stash เพียงไม่กี่รหัสด้านล่างจะมีประโยชน์ในกรณีนั้น

#!/bin/sh
for i in `seq 5 8`
do
   git stash drop stash@{$i}
done

/ * จะลบจากดัชนี 5 ถึง 8 * /


ลองfor iterator in `seq 5 8`; git stash drop stash@{$iterator}; done
Chris McCowan

3
โปรดทราบว่าเมื่อคุณวางลงที่เก็บที่เหลือจะเลื่อนขึ้น 1 จุด ดังนั้นหากคุณต้องการลบจาก 5 เป็น 8 คุณต้องนับถอยหลังหรือลบที่ซ่อน @ {5} สี่ครั้ง ตัวอย่างเช่น: for i in `seq 4`; do git stash drop 'stash@{5}'; done
warp

@ChrisMcCowan รหัสของคุณหายไป ado
steezeburger

3

ถ้าคุณต้องการที่จะลบที่ซ่อนล่าสุดหรือที่ดัชนีใด ๆ -

git stash drop type_your_index

> git stash list

  stash@{0}: abc
  stash@{1}: xyz
  stash@{1}: pqr

> git stash drop 0

  Dropped refs/stash@{0}

> git stash list

  stash@{0}: xyz
  stash@{1}: pqr

หากคุณต้องการลบที่ซ่อนทั้งหมดในครั้งเดียว -

> git stash clear
>

> git stash list
>

คำเตือน : เมื่อเสร็จแล้วคุณจะไม่สามารถคืนการสะสมของคุณได้


1

หากต้องการลบการหยุดทั้งหมดที่เก่ากว่า 40 วันให้ใช้:

git reflog expire --expire-unreachable=40.days refs/stash

เพิ่ม--dry-runเพื่อดูว่าระบบลบข้อมูลใด

ดูhttps://stackoverflow.com/a/44829516/946850สำหรับคำอธิบายและรายละเอียดเพิ่มเติม

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