Cập nhật 2:
Tôi không chắc tại sao mọi người lại phàn nàn về câu trả lời này, có vẻ như nó đang hoạt động hoàn hảo với tôi, đối với các tệp chưa được giải quyết, bạn có thể thêm -u
cờ
Lệnh đầy đủ trở thành git stash --keep-index -u
Và đây là một đoạn trích từ git-stash
trợ giúp
Nếu tùy chọn --keep-index được sử dụng, tất cả các thay đổi đã được thêm vào chỉ mục sẽ được giữ nguyên.
Nếu tùy chọn --include-unracked được sử dụng, tất cả các tệp chưa được kiểm soát cũng được lưu trữ và sau đó được dọn dẹp bằng git clean, để lại thư mục làm việc ở trạng thái rất sạch. Nếu tùy chọn --all được sử dụng thay thế thì các tệp bị bỏ qua sẽ được lưu trữ và làm sạch ngoài các tệp chưa được theo dõi.
Và đây là ảnh gif của nó trông như thế nào:
Cập nhật:
Mặc dù đây là câu trả lời được chọn, nhưng nhiều người đã chỉ ra rằng [câu trả lời bên dưới] (https://stackoverflow.com/a/34681302/292408) là câu trả lời chính xác, tôi khuyên bạn nên kiểm tra.
Tôi đã kiểm tra lại câu trả lời của mình hôm nay (31/1/2020) với phiên bản git 2.24.0
và tôi vẫn tin rằng nó đúng, tôi đã thêm một lưu ý nhỏ ở trên về các tệp chưa được kiểm tra. Nếu bạn cho rằng nó không hoạt động, vui lòng đề cập đến phiên bản git của bạn.
Câu trả lời cũ :
Nếu --keep-index
tùy chọn được sử dụng, tất cả các thay đổi đã được thêm vào chỉ mục vẫn được giữ nguyên:
git stash --keep-index
Từ tài liệu củagit-stash
:
Kiểm tra cam kết từng phần
Bạn có thể sử dụng git stash save --keep-index
khi bạn muốn thực hiện hai hoặc nhiều cam kết trong số các thay đổi trong cây công việc và bạn muốn kiểm tra từng thay đổi trước khi cam kết:
# ... hack hack hack ...
$ git add --patch foo # add just first part to the index
$ git stash save --keep-index # save all other changes to the stash
$ edit/build/test first part
$ git commit -m 'First part' # commit fully tested change
$ git stash pop # prepare to work on all other changes
# ... repeat above five steps until one commit remains ...
$ edit/build/test remaining parts
$ git commit foo -m 'Remaining parts'
Tuy nhiên, nếu bạn chỉ muốn kiểm tra trực quan các thay đổi theo giai đoạn, bạn có thể thử difftool
:
git difftool --cached
-k
tùy chọn) hoặc cồng kềnh để sử dụng.