Git stash dường như làm rất nhiều thứ tôi muốn, ngoại trừ việc nó hơi khó để viết kịch bản, vì nếu bạn không có thay đổi, thì git stash; git stash pop
sẽ làm một cái gì đó khác với nếu bạn có thay đổi trong kho lưu trữ của mình.
Dường như đó git stash create
là câu trả lời cho vấn đề đó và mọi thứ đều hoạt động, ngoại trừ một điều mà tôi không thể thoát khỏi stash đã tạo. Có cách nào để thoát khỏi stash?
Để làm cho nó rõ ràng 100% những gì tôi đang làm:
Tạo stash:
~/tmp/a(master) $ git stash create
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message
Sử dụng stash:
~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
Xóa stash: (ngoại trừ bit cuối cùng này không hoạt động)
~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
git stash apply
nó hoạt động. Các git apply
nỗ lực để đọc một tệp vá cục bộ, không tồn tại. Thành thật mà nói, nó có lẽ không nên ở đó, và nó không bao giờ có thể làm việc. Tôi mơ hồ muốn loại bỏ nó khỏi câu hỏi, nhưng cho rằng nó đã giúp rất nhiều trong hình thức hiện tại của nó, tôi sẽ để nó như vậy.
git apply
chạy trong hộp mã thứ hai tại thời điểm viết bài này đã không áp dụng một bản vá lỗi, thông báo lỗi trong đầu ra đã cho bạn biết điều này. Vì vậy, trên thực tế, bạn đã cố gắng tạo một stash (không hoạt động, xem các bình luận bên dưới) áp dụng một stash không được tạo sau đó thả một stash không được tạo. Đây là lý do tại sao không có gì bạn đã làm việc.