Tôi thực hiện git stash lưu "ABC" và và do nhầm lẫn tôi đã git stash rõ ràng. Làm thế nào tôi có thể lấy dữ liệu đã được trong stash ABC. Giúp hài lòngLàm thế nào để hoàn tác git stash rõ ràng
Trả lời
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
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).
- 1. Hoàn tác ngẫu nhiên git stash pop
- 2. Hoàn tác git stash pop trên cây làm việc bẩn
- 3. làm thế nào để hoàn tác cập nhật git submodule
- 4. Làm thế nào để hoàn tác một cuộn Git
- 5. Git: làm thế nào để sử dụng stash -p để stash các tập tin cụ thể?
- 6. Hoàn tác một git pull --rebase
- 7. Làm cách nào để hoàn tác một git svn dcommit?
- 8. Hoàn tác hợp nhất git
- 9. Sự cố tự động hoàn tất khi nhập git stash hiển thị stash @ {1}
- 10. Làm thế nào để hoàn tác cuối cùng cam kết
- 11. hủy bỏ 'git stash apply`
- 12. Hoàn tác Git Clean
- 13. Git Shelve vs Stash
- 14. Làm thế nào để viết di chuyển để hoàn tác ràng buộc duy nhất trong Laravel?
- 15. Làm thế nào để hoàn tác một squash git hợp nhất?
- 16. Làm thế nào để đảo ngược áp dụng một stash?
- 17. Hoàn tác git add --all
- 18. Cách hoàn tác 'git fetch'
- 19. Hoàn tác xóa trong GIT
- 20. Hoàn tác lỗi git bisect
- 21. Git stash hai lần
- 22. làm thế nào để hoàn tác git add trước khi cam kết
- 23. Git: Làm thế nào để hoàn tác commit * và * trở về nhánh cuối
- 24. Làm thế nào để mô phỏng 'git stash' trong hóa thạch, bzr?
- 25. Hoàn tác trong các ràng buộc WPF
- 26. Làm thế nào để lấy các tập tin untracked với git stash
- 27. Có lệnh nào để hoàn tác git init không?
- 28. Git diff - giải thích rõ ràng
- 29. Làm thế nào để bạn "cập nhật" một stash?
- 30. Làm cách nào để git stash với Visual Studio Tools cho Git v0.8.5.1
Nó không hoạt động: ( –
@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 đó. –
Trên OSX: '' 'git fsck --unreachable | grep commit | cut -d '' -f3 | xargs git log - hợp nhất --no-walk --grep = WIP''' –