2015-09-11 27 views

Trả lời

23

Vì nó có thể được tìm thấy trong the documentation of git stash, bạn có thể được may mắn nếu công trình này:

ẩn nấp Phục hồi đó đã được xóa/giảm sai lầm

Nếu bạn nhầm thả hoặc ẩn nấp rõ ràng, họ không thể được phục hồi thông qua các cơ chế an toàn thông thường. Tuy nhiên, bạn có thể thử câu thần chú sau đây để có danh sách các dấu gạch ngang vẫn còn trong kho lưu trữ của bạn, nhưng không thể truy cập được nữa:

git fsck --unreachable | grep cam kết | cắt -d \ -f3 | xargs git log --merges --no-đi bộ --grep = WIP

Nếu bạn tìm thấy những stash bạn xóa do nhầm lẫn, sau đó bạn có thể làm:

git stash apply <stash> 

EDIT: Sử dụng lệnh này thay vì git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk --grep=WIP

+0

Nó không hoạt động: ( –

+2

@AshishBanker: Sau đó, nó đã biến mất. Hãy để đây là một bài học cho bạn. Không sử dụng 'git stash' để lưu trữ những thay đổi bạn quan tâm, sử dụng' git commit', ngay cả khi nó Bạn luôn có thể 'git commit --amend' và' git rebase -i' sau đó. –

+5

Trên OSX: '' 'git fsck --unreachable | grep commit | cut -d '' -f3 | xargs git log - hợp nhất --no-walk --grep = WIP''' –

0

Tôi cũng đã xóa một dấu gạch ngang, nhưng sử dụng GitKraken gui, vì vậy tôi không biết chính xác lệnh git nào được thực thi. Câu trả lời được chọn đã không làm việc cho tôi nhưng đặt tôi vào con đường bên phải ít nhất.

Trong trường hợp của tôi, tìm kiếm thủ công thông qua các đối tượng không truy cập được. Tôi chắc chắn có một cách hiệu quả hơn, nhưng tôi chỉ vui vì tôi đã có thể phục hồi các thay đổi.

ids=`git fsck --unreachable | grep blob | cut -d ' ' -f3` 
number_of_ids=`echo $ids | wc -l | tr -d '[:space:]'` 
for i in {1..$number_of_ids}; do git show `echo $ids | sed -n ${i}p` > evaluate$i.rb;done; 

Vì vậy, đây lưu tất cả các đối tượng không thể truy cập vào các file bắt đầu bằng "đánh giá". Sau đó, tôi đã mở tất cả các tệp trong trình chỉnh sửa văn bản (tuyệt đối cho tôi subl evaluate*) và đã đánh giá từng tệp một cách thủ công, sao chép và dán tệp vào phiên bản cũ của tệp gốc nếu đó là tệp từ stash tôi đã xóa.

Mẹo:

  • Thay đổi .rb để phù hợp với phần mở rộng tập tin của các tập tin bạn đang tìm kiếm, để có được làm nổi bật cú pháp thích hợp nếu bạn muốn nó.
  • Nếu tệp của bạn không được bao gồm, bạn có thể mở rộng phạm vi tìm kiếm của mình bằng cách xóa | grep blob (các đốm màu là nơi tôi tìm thấy tệp của mình).
Các vấn đề liên quan