Git stash hai lần


94

Tôi phải nhanh chóng chuyển các nhánh git, vì vậy tôi đã chạy git stash, nhưng tôi phải chạy lại vì một trong các tệp của tôi cần chỉnh sửa.

Vì vậy, tôi đã chạy git stashhai lần và tôi đã sẵn sàng quay lại chỉnh sửa tệp của mình. Tôi đã chạy git stash applynhưng tôi không tin rằng tất cả các tệp tôi đã lưu trữ đã được gỡ bỏ. Tôi có thể làm gì không? Có cách nào để kiểm tra không?

Khi tôi chạy git stash show, tôi chỉ thấy đoạn cuối cùng trong số hai dòng git của mình.

Có anyway để hiển thị tất cả git stashes?


4
git stash list. Nếu bạn thực hiện hai lần lưu trữ, sau đó gọi git stash pophai lần.
Felix Kling

Chào bạn, bạn đã sửa nó! Bạn nên đặt nó như một câu trả lời. Cảm ơn rất nhiều
stephenmurdoch

Câu trả lời:


169

Bạn có thể nhận danh sách tất cả các kho lưu trữ với

git stash list

nó sẽ cho bạn thấy một cái gì đó giống như

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Nếu bạn thực hiện hai lần lưu trữ, thì chỉ cần gọi git stash pophai lần. Trái ngược với git stash apply, popáp dụng và xóa kho lưu trữ mới nhất.

Bạn cũng có thể tham khảo một kho cụ thể, ví dụ:

git stash show stash@{1}

hoặc là

git stash apply stash@{1}

Cảm ơn rất nhiều. Đã lưu ngày của tôi.
stephenmurdoch

25
Nếu bạn muốn git stash pophai lần vì bạn muốn cả hai lần lưu trữ trong cùng một cam kết nhưng bạn gặp phải "lỗi: Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè bằng cách hợp nhất:" vào ngày thứ 2 git stash pop, thì bạn có thể: 1) git stash pop, 2) git add .và 3 ) git stash pop.
gabe

Điều này đã giúp tôi. Tôi cần thực hiện "git stash" và sau đó "git stash --all" để lưu trữ một số tệp mới chưa được theo dõi. Thực hiện git stash pop hai lần không hoạt động. Tôi chỉ lấy lại số tiền sau đó.
Leopold Kristjansson

0

Tôi đã gặp phải tình huống này, tôi đã thực hiện hai lần lưu trữ và git stash pop vừa bỏ lưu trữ cuối cùng. Tôi cũng vậy

git stash list

git stash pop stash@{1}

Điều này đã gỡ bỏ kho lưu trữ đầu tiên của tôi và tôi có thể thấy tất cả các thay đổi của mình trở lại!


0

Bạn đã hỏi một số câu hỏi khác nhau trong bài đăng và những người trả lời khác đã đưa ra câu trả lời tốt cho một số câu hỏi đó. Câu hỏi có vẻ quan trọng nhất nhưng chưa được trả lời là:

>> Tôi không tin rằng tất cả các tệp tôi đã lưu trữ đã được gỡ bỏ. Tôi có thể làm gì không? Có cách nào để kiểm tra không?

So sánh kho với cây cục bộ

Tôi nghĩ những gì bạn muốn làm là so sánh kho lưu trữ với cây làm việc cục bộ của bạn . Bạn có thể đặt công tắc -p trên lệnh stash và bạn đã ổn:

git stash show -p

Nếu bạn đang theo dõi một trang cụ thể nào đó, chỉ cần sử dụng tên hoặc id git stash của nó từ danh sách stash:

git stash show -p stash@{3}

Có thể sử dụng khác nhau?

Nếu bạn thực sự quan tâm đến việc nâng cao kỹ năng git của mình, bạn luôn có thể chọn một sự khác biệt. Để xem sự khác biệt giữa những gì trong kho lưu trữ và những gì được kiểm tra trong HEAD trên nhánh chính, có thể sử dụng sự khác biệt sau:

git diff stash@ master

Một lệnh đơn giản khác để hiển thị cho bạn những thay đổi đối với các phần tử trong lịch sử lưu trữ có thể hữu ích là --stat:

git stash list --stat

Nhưng tôi nghĩ câu trả lời đơn giản là câu trả lời đúng. Chỉ cần sử dụng công tắc -p và bạn có thể sẽ thấy liệu kho chứa bạn đã xếp đã được xuất hiện trở lại hay chưa.

 git stash show -p stash@{3}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.