Các tệp chưa được theo dõi được lưu trữ trong tệp gốc thứ ba của một cam kết lưu trữ. (Điều này không thực sự được ghi lại bằng tài liệu, nhưng khá rõ ràng từ The commit đã giới thiệu tính năng -u, 787513 ... và cách phần còn lại của tài liệu cho cácgit-stash
cụm từ mọi thứ ... hoặc chỉ bằng cách thực hiện git log --graph stash@{0}
)
Bạn chỉ có thể xem phần "chưa được theo dõi" của kho thông qua:
git show stash@{0}^3
hoặc, chỉ bản thân cây "chưa được theo dõi", thông qua:
git show stash@{0}^3:
hoặc, một tệp "chưa được theo dõi" cụ thể trong cây, qua:
git show stash@{0}^3:<path/to/file>
Thật không may, không có cách nào tốt để có được bản tóm tắt về sự khác biệt giữa tất cả trạng thái theo giai đoạn + chưa theo giai đoạn + chưa theo dõi và trạng thái "hiện tại". nghĩa là: git show stash@{0}
không thể được thực hiện để bao gồm các tệp chưa được theo dõi. Điều này là do bản thân đối tượng cây của bản cam kết lưu trữ, được gọi là stash@{0}:
, không bao gồm bất kỳ thay đổi nào từ cấp độ gốc thứ ba, "không được phân giai đoạn".
Điều này là do cách áp dụng lại kho lưu trữ: các tệp được theo dõi có thể dễ dàng được áp dụng dưới dạng bản vá, trong khi các tệp không được theo dõi chỉ có thể được áp dụng, về lý thuyết, dưới dạng "toàn bộ tệp".
git stash show
dường như hiển thị sự khác biệt giữa bản sao làm việc và # 1 (mã liên quan từ git-stash.sh:,git diff ${FLAGS:---stat} $b_commit $w_commit
trong đó $ b_commit là # 1 và $ w_commit là cam kết lưu trữ); có cách nào tích hợp sẵngit stash show
để bao gồm # 3 không?