Vì vậy, tôi không chắc tại sao có quá nhiều sự dè dặt về chủ đề này. Tôi có thể đặt tên cho một stash với cả đẩy và lưu không dùng nữa và tôi có thể sử dụng biểu thức chính quy để kéo nó trở lại với một ứng dụng:
Phương pháp Git stash để sử dụng tên để áp dụng
$ git stash push -m "john-hancock"
$ git stash apply stash^{/john-hancock}
Như đã được đề cập trước đó, lệnh save không được dùng nữa, nhưng nó vẫn hoạt động, vì vậy bạn có thể sử dụng nó trên các hệ thống cũ hơn, nơi bạn không thể cập nhật chúng bằng một cuộc gọi đẩy. Không giống như lệnh đẩy, công tắc -m không bắt buộc phải lưu.
// save is deprecated but still functional
$ git stash save john-hancock
Vấn đề với một pop và thả
Tôi không tin rằng nó hoạt động với pop, nhưng tôi nghĩ đó là vì pop thực hiện giảm sau khi áp dụng, và regex không giảm thân thiện. Đó chỉ là một linh cảm. Tôi đã không kiểm tra nó.
Đây là Git 2.2 và Windows 10.
Bằng chứng trực quan
Đây là một GIF hoạt hình đẹp thể hiện quá trình.
Chuỗi các sự kiện
GIF chạy nhanh, nhưng nếu bạn nhìn, quá trình này là:
- Lệnh ls hiển thị 4 tệp trong thư mục
- chạm example.html thêm tệp thứ 5
- git stash đẩy -m "john-hancock" -a (-a bao gồm các tệp không bị theo dõi)
- Lệnh ls hiển thị 4 tệp sau stash, nghĩa là stash và thiết lập lại cứng ẩn hoạt động
- git stash áp dụng stash ^ {/ john-hancock} chạy
- Lệnh ls liệt kê 5 tệp, hiển thị tệp example.html đã được đưa trở lại, nghĩa là lệnh git stash áp dụng đã hoạt động.
Điều này thậm chí có ý nghĩa?
Thành thật mà nói, tôi không chắc lợi ích của phương pháp này là gì. Có giá trị trong việc đặt tên cho stash, nhưng không phải là truy xuất. Có thể kịch bản quá trình này sẽ hữu ích, nhưng vẫn dễ dàng hơn khi chỉ bật một stash theo tên.
$ git stash pop 3
$ git stash apply 3
Điều đó có vẻ dễ dàng với tôi hơn regex.
git stash push -m stashname
là cú pháp hiện tại .git stash save stashname
đã bị phản đối