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.
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:
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 (...).
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? ")?
git stash clear
, để xác nhận nếu tất cả đã bị xóa, hãy sử dụng -git stash list
git
thực tế là không thể tìm thấy! git-scm.com/docs/git-stash
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 stash
rõ ràng cho thấy git stash clear
hà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)
Có hai cách để xóa stash:
$ git stash drop <stash_id>
.$ 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 .
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 list
cho phép bạn lấy chỉ mục từ vùng chứa git.
git stash drop 'stash@{index}'
, với dấu nháy đơn.
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
git stash pop 3
thay thế? Tôi muốn biết liệu chúng ta có thể sử dụng while
vòng lặp và thả stash bằng các giá trị chỉ mục hay không.
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 * /
for iterator in `seq 5 8`; git stash drop stash@{$iterator}; done
for i in `seq 4`; do git stash drop 'stash@{5}'; done
do
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
Để xóa tất cả các stash cũ hơn 40 ngày, sử dụng:
git reflog expire --expire-unreachable=40.days refs/stash
Thêm --dry-run
để xem stash nào bị xóa.
Xem https://stackoverflow.com/a/44829516/946850 để được giải thích và chi tiết hơn nhiều.