Làm cách nào tôi có thể xóa tất cả các bản gốc Git của mình cùng một lúc?


1406

Làm cách nào tôi có thể xóa tất cả các bản gốc Git của mình cùng một lúc?

Ý tôi là cụ thể, với việc gõ một lệnh.

Câu trả lời:


2462

Lệnh sau sẽ xóa tất cả các stash của bạn:

git stash clear

Từ tài liệu git :

clear

Loại bỏ tất cả các trạng thái cất.

CẢNH BÁO QUAN TRỌNG: Những trạng thái đó sau đó sẽ bị cắt tỉa và có thể không thể phục hồi (...).


13
Tại sao không git stash thả?
dùng2058

137
@ user20358: Bởi vì stash drop(" Hủy bỏ tình trạng giấu duy nhất từ danh sách stash Khi không <stash> được đưa ra, nó loại bỏ một trong những mới nhất (...).. ') không trả lời câu hỏi (' Làm thế nào tôi có thể xóa tất cả các Git của tôi bị kẹt ngay lập tức? ")?
Tadeck

11
Ngoài những gì câu trả lời được chấp nhận đã đề cập - git stash clear, để xác nhận nếu tất cả đã bị xóa, hãy sử dụng -git stash list
kamal

2
@ jedd.ahyoung Điều này sẽ có thêm 1.000 lượt upvote. Các tài liệu cho gitthực tế là không thể tìm thấy! git-scm.com/docs/git-stash
Drenai

11
@Ryan: git help <command>là cách tốt nhất để lấy tài liệu (và, nó thực sự khá tốt). Trong trường hợp này, git help stashrõ ràng cho thấy git stash clearhành động đó (điều này không ngăn tôi đến với SO trước và nâng cao câu trả lời ... nhưng điều đó cho bạn biết nhiều hơn về tôi hơn là git: D)
Marco Massenzio

46

Có hai cách để xóa stash:

  1. Nếu bạn không còn cần một stash cụ thể, bạn có thể xóa nó bằng : $ git stash drop <stash_id>.
  2. Bạn có thể xóa tất cả các stash của mình khỏi repo bằng : $ git stash clear.

Sử dụng cả hai một cách thận trọng, có thể rất khó để hoàn nguyên các lần xóa đã xóa.

Dưới đây là bài viết tham khảo .


2
Đóng thiết bị đầu cuối không có gì để làm với nó. git không phải là daemon; Nó chỉ chạy khi bạn gọi nó. Nó không có ý tưởng bạn đóng thiết bị đầu cuối.
DylanYoung

31

lệnh này cho phép bạn xem tất cả các thay đổi được lưu trữ.

git stash list

Dưới đây là lệnh sau sử dụng nó để xóa tất cả các Thay đổi được lưu trữ của bạn

git stash clear

Bây giờ nếu bạn muốn xóa một trong những thay đổi được lưu trữ từ khu vực lưu trữ

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

Lưu ý: git stash listcho phép bạn lấy chỉ mục từ vùng chứa git.


Đáng nói là ít nhất là đối với thiết bị đầu cuối tích hợp trong VSCode sử dụng Windows 10, đó là git stash drop 'stash@{index}', với dấu nháy đơn.
Oriol Miró

13

Tôi muốn giữ một vài stash gần đây, nhưng xóa mọi thứ khác.

Bởi vì tất cả các stash bị đánh số lại khi bạn thả một cái, điều này thực sự dễ thực hiện trong khi. Để xóa tất cả các stash cũ hơn stash @ {19}:

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

Điều này có áp dụng cho các giá trị được lập chỉ mục được giới thiệu trong Git 2.11 hay không, nơi bạn có thể tham khảo stash thứ 3 từ danh sách stash bằng cách sử dụng git stash pop 3thay thế? Tôi muốn biết liệu chúng ta có thể sử dụng whilevòng lặp và thả stash bằng các giá trị chỉ mục hay không.
tom_mai78101

Tôi yêu sự đơn giản của điều này, giải pháp thanh lịch tốt đẹp!
dominic

3

Tôi đã có một yêu cầu khác giống như chỉ một vài stash phải được loại bỏ, mã bên dưới sẽ hữu ích trong trường hợp đó.

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

/ * sẽ xóa từ 5 đến 8 chỉ mục * /


thửfor iterator in `seq 5 8`; git stash drop stash@{$iterator}; done
Chris McCowan

3
Lưu ý rằng khi bạn thả, các stash còn lại di chuyển lên 1 điểm. Vì vậy, nếu bạn muốn xóa từ 5 đến 8, bạn cần đếm ngược hoặc xóa stash @ {5} bốn lần. Ví dụ: for i in `seq 4`; do git stash drop 'stash@{5}'; done
warp

@ChrisMcCowan mã của bạn cũng bị thiếudo
steezeburger

3

nếu bạn muốn xóa stash mới nhất hoặc tại bất kỳ chỉ mục cụ thể nào -

git stash thả 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

nếu bạn muốn xóa tất cả stash cùng một lúc -

> git stash clear
>

> git stash list
>

Cảnh báo : Sau khi hoàn tất, bạn không thể hoàn nguyên lại stash của mình


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.