Bagaimana saya bisa menghapus semua simpanan Git saya sekaligus?

1406

Bagaimana saya bisa menghapus semua simpanan Git saya sekaligus?

Secara khusus yang saya maksud, dengan mengetikkan satu perintah.

Ribka Waterbury
sumber

Jawaban:

2462

Perintah berikut menghapus semua simpanan Anda:

git stash clear

Dari dokumentasi git :

clear

Hapus semua status simpanan.

PERINGATAN PENTING: Negara-negara tersebut kemudian akan dikenakan pemangkasan, dan mungkin mustahil untuk dipulihkan (...).

Tadeck
sumber
13
mengapa tidak drop drop git?
user20358
137
@ user20358: Karena stash drop(" Hapus keadaan tersimpan tunggal dari daftar simpanan Bila tidak ada <simpanan> diberikan, menghilangkan yang terbaru (...).. ') tidak menjawab pertanyaan (' Bagaimana saya dapat menghapus semua dari Git saya disimpan sekaligus? ")?
Tadeck
11
Selain jawaban yang diterima disebutkan - git stash clear, untuk mengkonfirmasi jika semua sudah jelas, gunakan -git stash list
kamal
2
@ jedd.ahyoung Ini seharusnya memiliki 1.000 upvote lainnya. Dokumentasi untuk gitpraktis tidak mungkin ditemukan! git-scm.com/docs/git-stash
Drenai
11
@Ryan: git help <command>adalah cara terbaik untuk mendapatkan dokumentasi (dan, sebenarnya cukup bagus). Dalam hal ini, git help stashjelas tunjukkan bahwa git stash clearapakah perbuatan itu (ini tidak menghentikan saya untuk datang ke SO terlebih dahulu dan mengangkat jawabannya ... tetapi itu memberi tahu Anda lebih banyak tentang saya daripada git: D)
Marco Massenzio
46

Ada dua cara untuk menghapus simpanan:

  1. Jika Anda tidak lagi membutuhkan simpanan tertentu, Anda dapat menghapusnya dengan: $ git stash drop <stash_id>.
  2. Anda dapat menghapus semua stashes Anda dari repo dengan: $ git stash clear.

Gunakan keduanya dengan hati-hati, mungkin sulit untuk mengembalikan simpanan yang pernah dihapus.

Inilah artikel referensi .

Nesha Zoric
sumber
2
Menutup terminal tidak ada hubungannya dengan itu. git bukan daemon; itu hanya berjalan ketika Anda menyebutnya. Tidak tahu Anda menutup terminal.
DylanYoung
31

perintah ini memungkinkan Anda untuk melihat semua perubahan simpanan.

git stash list

Ini adalah perintah berikut untuk menggunakannya untuk menghapus semua Perubahan yang Anda simpan

git stash clear

Sekarang jika Anda ingin menghapus salah satu perubahan simpanan dari area simpanan

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

Catatan: git stash listmemungkinkan Anda untuk mendapatkan indeks dari area simpanan git.

Vikrant Kashyap
sumber
Layak disebutkan bahwa setidaknya untuk terminal terintegrasi dalam VSCode menggunakan Windows 10, yaitu git stash drop 'stash@{index}', dengan tanda kutip.
Oriol Miró
13

Saya ingin menyimpan beberapa simpanan baru-baru ini, tetapi menghapus yang lainnya.

Karena semua simpanan dinomori ulang ketika Anda menjatuhkan satu, ini sebenarnya mudah dilakukan dengan sementara. Untuk menghapus semua simpanan yang lebih lama dari simpanan @ {19}:

while git stash drop 'stash@{20}'; do true; done
melengkung
sumber
Apakah ini berlaku untuk nilai indeks yang diperkenalkan di Git 2.11, di mana Anda bisa merujuk simpanan ke-3 dari daftar simpanan menggunakan git stash pop 3? Saya ingin tahu apakah kita bisa menggunakan whileloop dan drop stash menggunakan nilai indeks.
tom_mai78101
Saya suka kesederhanaan ini, solusi elegan yang bagus!
Dominic
3

Saya mempunyai persyaratan lain seperti hanya beberapa simpanan yang harus dihapus, kode di bawah ini akan sangat membantu dalam hal ini.

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

/ * akan menghapus indeks dari 5 hingga 8 * /

Bala Krishnan
sumber
cobafor iterator in `seq 5 8`; git stash drop stash@{$iterator}; done
Chris McCowan
3
Perhatikan bahwa ketika Anda jatuh, sisa simpanan naik 1 tempat. Jadi jika Anda ingin menghapus dari 5 hingga 8, Anda harus menghitung mundur atau menghapus simpanan @ {5} empat kali. Misalnya: for i in `seq 4`; do git stash drop 'stash@{5}'; done
warp
@ChrisMcCowan kode Anda juga tidak adado
steezeburger
3

jika Anda ingin menghapus simpanan terbaru atau pada indeks tertentu -

git menyimpan 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

jika Anda ingin menghapus semua simpanan sekaligus -

> git stash clear
>

> git stash list
>

Peringatan : Setelah selesai, Anda tidak dapat mengembalikan simpanan Anda

Shivam Bharadwaj
sumber
1

Untuk menghapus semua simpanan yang lebih dari 40 hari, gunakan:

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

Tambahkan --dry-rununtuk melihat simpanan mana yang dihapus.

Lihat https://stackoverflow.com/a/44829516/946850 untuk penjelasan dan lebih banyak detail.

krlmlr
sumber